[OOP] Factory Pattern
Mẫu Abstract Factory là một mẫu thiết kế (design pattern) trong lập trình hướng đối tượng. Nó cho phép bạn tạo ra các đối tượng liên quan đến nhau mà không cần chỉ định rõ ràng lớp cụ thể của chúng.
Đây là một ví dụ về cách sử dụng mẫu Abstract Factory trong Java để tạo ra các nút đồ họa trên giao diện người dùng (GUI):
Đầu tiên, hãy định nghĩa một interface cho các nút đồ họa:
javapublic interface Button {
void paint();
}
Tiếp theo, hãy định nghĩa một abstract factory để tạo ra các nút đồ họa:
javapublic interface GUIFactory {
Button createButton();
}
Sau đó, hãy định nghĩa hai factory cụ thể để tạo ra các nút đồ họa, một cho giao diện người dùng Windows và một cho giao diện người dùng Mac:
javapublic class WindowsGUIFactory implements GUIFactory {
public Button createButton() {
return new WindowsButton();
}
}
public class MacGUIFactory implements GUIFactory {
public Button createButton() {
return new MacButton();
}
}
Sau đó, hãy định nghĩa các lớp nút cụ thể:
javapublic class WindowsButton implements Button {
public void paint() {
System.out.println("Windows Button");
}
}
public class MacButton implements Button {
public void paint() {
System.out.println("Mac Button");
}
}
Cuối cùng, hãy sử dụng các factory để tạo ra các nút đồ họa tương ứng với hệ điều hành:
javapublic class Application {
public Application(GUIFactory factory) {
Button button = factory.createButton();
button.paint();
}
public static void main(String[] args) {
new Application(new WindowsGUIFactory());
new Application(new MacGUIFactory());
}
}
Trong đoạn mã trên, Application
tạo ra các đối tượng Button
thông qua các GUIFactory
tương ứng với hệ điều hành, và gọi phương thức paint()
trên mỗi đối tượng để hiển thị nút đồ họa tương ứng.
Mẫu Abstract Factory được sử dụng khi bạn cần tạo ra các đối tượng liên quan đến nhau hoặc có liên quan đến một chủ đề cụ thể. Nó cho phép bạn tạo ra các đối tượng mà không cần biết lớp cụ thể của chúng và đảm bảo tính tương thích giữa các đối tượng được tạo ra. Mẫu này thường được sử dụng trong các ứng dụng đa nền tảng, trong đó các đối tượng phải được
Nguồn: chatGPT
Không có nhận xét nào