LINUX.ORG.RU

Шаблон Абстрактная Фабрика


0

1

Доброго времени суток. Пытаюсь заниматься освоением паттернов. Возможно ли нижеследующий сорс обозвать реализацией сабжа? Не нарушена ли семантика паттерна (да и соблюдена ли она вообще), архитектура? Буду рад любым замечаниям.

Сорсеги:

ArmyBuilder (main)

ArmyFactory (абстрактная фабрика)

ArmyAbstractFactory (интерфейс будущих конкретных фабрик)

RussianArmy (конкретная фабрика)

Исход целиком

Заранее спасибо :)


может вам лучше сразу - в военкомат?

MKuznetsov ★★★★★
()

Это не работает без Синглтонов. В данном случае - синглтон «солнцеликий руководитель».

vonenij
()

Абстрактная_фабрика_(шаблон_проектирования) судя по картинке или по коду на яве, нет.

ArmyFactory (абстрактная фабрика)

должна была быть интерфейсом. на абстрактную фабрику больше похож ваш класс ArmyAbstractFactory. а на клиента ArmyFactory. продуктов у вас в принципе нет, а значит фабрики свою функциональность не выполняют.

anonymous
()
Ответ на: комментарий от WennY

связь архива и картинки[/url]: [list] [*] Army/ArmyBuilder - это абстрактная фабрика,

  • Army/Germany/Factory - реализация фабрики,
  • Army/Aviation и другие - абстрактные продукты,
  • Army/Germany/Aviation и другие - реализации продуктов для немецкой фабрики,
  • объединение Army/Factory - клиент

нехватает в Main, в зависимости от какого-либо условия, выбора реализации фабрики и выноса из конструкторов действий отражающих созданные объекты. объекты должны создаваться не просто ради создания.

anonymous
()

ArmyFactory (абстрактная фабрика)

Это что за херня вообще?

crowbar
()
Ответ на: комментарий от anonymous

anonymous

нехватает в Main, в зависимости от какого-либо условия, выбора реализации фабрики и выноса из конструкторов действий отражающих созданные объекты. объекты должны создаваться не просто ради создания.

Ну, пример сугубо синтетический :)

За линковку моих примеров с виковскими - благодарю, теперь все куда яснее. На это и расчитывал.

WennY
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.