Я действительно смущен этими тремя условиями.
Мое понимание то, что:
в Шаблоне "фабрика" нет никакой конкретной фабрики. Фабрика создает новые объекты согласно параметрам.
в Шаблоне "абстрактная фабрика" существует несколько конкретных фабрик. Клиент должен создать различные конкретные фабрики явно.
Это правильно?
Каковы другие различия?
Кроме того, каков Шаблон "фабричный метод"? Это - то же как Шаблон "фабрика"?
Банда из четырех «шаблонов проектирования; элементы многоразового объектно-ориентированного программного обеспечения» содержит две записи, «абстрактный фабрика» (виртуальный конструктор «АКА») и «Фабрика» ... Я не знаю о "бетонной фабрике". Я слышал срок, но никогда не дал это слишком много думать.
в «Factory Method» объект имеет способ, который отвечает за создание другого объекта. Общим примером является объектом документа JavaScript и создание объектов HTMLELEMENT
:
var newDiv = document.createElement('div');
Это не отличный пример, хотя, так как важная часть фабричного метода является полиморфизм. Если бы я мог расширить документ
, чтобы определить другой класс, который определяет другое CreateeEdeelement
, это было бы основным материалом метода фабрики.
Абстрактная фабрика предназначена для «обеспечения интерфейса для создания семейств связанных или зависимых объектов без указания бетонных классов.
типичный выпрямительный Пример книги - это фабрика виджета; обратно в тот день, когда был опубликован GOF, кроссплатформальная разработка GUI была немного хлопот, поэтому вы можете определить абстрактный класс Widget Widget.
Этот класс может иметь методы Createwindow
, CreateButton
, CreateScrollbar
и т. Д. В свою очередь, несколько реализаций будут определены для получения виджетов или AWT Swing или AWT. Затем, в зависимости от конфигурации, другой класс будет Суммировано.
Я считаю, что бетонная фабрика представляет собой любую не абстрактную реализацию абстрактных фабричных или фабричных методов.
Итак, когда я пишу свое собственное обобщение документа
который переопределяет CreateeEdeeEdeeEdeeDement
, класс I CRE ATE - бетонная фабрика.
Аналогично, в то время как WidgetFactory
будет абстрактным фабрикой, SwingWidgettactory
будет бетонная фабрика.
Лучший способ учиться - это определенно читать. Взгляните на это: http://www.dofactory.com/Patterns/Patterns.aspx .
Фабричный метод откладывает создание объектов в подклассы. Это означает, что базовый класс/интерфейс определен, однако клиентский код не создает объект на основе этого интерфейса. Подклассы, реализующие интерфейс, оставляются для инициализации объекта.
Абстрактные фабрики можно найти здесь: http://www.dofactory.com/Patterns/PatternAbstract.aspx#_self2
На этом сайте уже есть хорошая информация. Следующая лучшая вещь - это проверка вики:
http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29
http://javadesign-patterns.blogspot.com/ - хорошее место для изучения шаблонов дизайна
. ФАБРИЧНЫЙ ШАБЛОН: возвращает объекты одного семейства
АБСТРАКТНАЯ ФАБРИКА: возвращает объекты более чем одного семейства.
Таким образом, вы можете сказать, что Абстрактная фабрика содержит более одной фабрики