2013-04-16 3 views
0

Пока я просматривал книгу Head first design pattern, я обнаружил, что «Абстрактная фабрика полагается на композицию объекта: создание объекта реализовано в методах, открытых в заводском интерфейсе» в абстрактной главе завода. Мое сомнение здесь в том, почему абстрактная фабрика опирается на композицию объекта?Абстрактный шаблон завода зависит от композиции объекта?

Если я возьму пример в wikipedia, тогда GUIFactory - это интерфейс, а WinFactory реализует GUIFactory. Затем, как абстрактная фабрика использует композицию. Заранее спасибо.

+4

«Создание объекта реализовано в ментолах, выставленных на фабричном интерфейсе». Я не понимал, что индустрия сигарет проникает в книги по программированию. –

+1

@PaulBellora спасибо !!! Ред. – Trying

+0

Я не понимаю, как абстрактная фабрика _not_ полагается на композицию? Он не говорит «использует», но полагается. Что он делает, вот что такое картина: абстрактная композиция. – Creynders

ответ

1

ИМХО, одеяло заявление как

Abstract Factory опирается на состав объекта

не является точным. В этом случае я считаю, что это - ленивое или чрезмерно широкое использование термина object composition при определении Abstract Factory.

запись Википедии для композиции объекта: http://en.wikipedia.org/wiki/Object_composition полезно здесь, когда он указывает:

В информатике, объектного состава [...] способ объединить простые объекты или типы данных в более сложные ,

Есть ли что-либо, что указывает на то, что абстрактная фабрика/фабрика/фабричный метод не могут возвращать простые объекты или типы данных?

Это риторический вопрос (я думаю). Я ничего не могу найти.

+0

Это заявление не мое. Я нашел stmt в вышеупомянутой книге, которую я не мог понять. Благодаря!!! – Trying

+0

Я не противоречу вам. Я видел, откуда вы взяли эту статью, и я разделяю с вами некоторую «путаницу» о том, является ли это утверждение точным. Я думаю, что вы делаете тонкую точку **, и я просто пытаюсь представить некоторые доказательства для дальнейшего. –

+0

BTW - запись в Википедии для «Абстрактной фабрики» содержит ту же самую фразу. Интересно, кто их скопировал? –

3

Я думаю, что они означают, что абстрактный завод описывает композицию для клиента и в этом смысле полагается на композицию объекта.

Возьмем другой пример, абстрактный завод BodyCreator определяет методы createArm, createLeg, createHead и т.д. Бетонные заводы могли быть DinosaurCreator и HumanCreator. Они создают все элементы для создания составного «тела», так что клиент может вызывать эти различные методы для его создания, но не нужно знать, какой тип тела он точно составляет. Так же, как в примере wikipedia GUIFactory описывает элементы, из которых состоит GUI.

Чтобы сделать это более ясно, что они должны уже добавили некоторые методы IMO: CheckBox createCheckBox(), TextField createTextField() и т.д.

Но, да, может быть, «полагается» был не самый лучший выбор слов.

Смежные вопросы