Как реализован паттерн Abstract Factory
Паттерн Abstract Factory предоставляет интерфейс для создания семейств взаимосвязанных объектов без указания их конкретных классов.
Пример:
// Абстрактная фабрика
interface GUIFactory {
Button createButton();
Checkbox createCheckbox();
}
// Конкретные фабрики
class WinFactory implements GUIFactory {
public Button createButton() { return new WinButton(); }
public Checkbox createCheckbox() { return new WinCheckbox(); }
}
class MacFactory implements GUIFactory {
public Button createButton() { return new MacButton(); }
public Checkbox createCheckbox() { return new MacCheckbox(); }
}
// Абстрактные продукты
interface Button { void render(); }
interface Checkbox { void check(); }
// Конкретные продукты
class WinButton implements Button { public void render() { /* ... / } }
class MacButton implements Button { public void render() { / ... / } }
class WinCheckbox implements Checkbox { public void check() { / ... / } }
class MacCheckbox implements Checkbox { public void check() { / ... */ } }
// Клиентский код
class Application {
private GUIFactory factory;
public Application(GUIFactory factory) { this.factory = factory; }
public void createUI() {
Button button = factory.createButton();
button.render();
}
}
**Используется, когда:**
- Система должна быть независимой от процесса создания объектов.
- Требуется создавать семейства связанных объектов.
офферы быстрее!
Следующий вопрос
Это единственный вопрос по вашему фильтру