Abstarct Factory Pattern
Тип: порождающий шаблон
Назначение: обеспечивает создание семейств взаимосвязанных или зависящих друг от друга
объектов без указания их конкретных классов.
Является развитием паттерна Factory Method.
Используется в следующих случаях:
- система не должна зависеть от способа создания объектов;
- система работает с одним из нескольких семейств объектов;
- объекты внутри семейства взаимосвязаны.
Программа обращается к классу-конструктору фабрик FactoryProducer, создавая два класса-фабрики CatFactory и DogFactory - наследники с реализацией абстрактного класса AbstractFactory. Классы фабрики создают 3 объекта класса Cat и 3 объекта класса Dog.
Создаем классы-интерфейсы Cat и Dog:
Cat.java, Dog.java
Создаем наследников класса Cat с реализацией его функций:
ThinCat.java, NormalCat.java, FatCat.java
Создаем наследников класса Dog с реализацией его функций:
ThinDog.java, NormalDog.java, FatDog.java
Создаем абстрактный класс AbstractFactory:
AbstractFactory.java
Создаем классы-фабрики CatFactory и DogFactory:
CatFactory.java, DogFactory.java
Создаем класс-конструктор фабрик FactoryProducer:
FactoryProducer.java
Основной класс AbstractFactoryPatternCvsD:
AbstractFactoryPatternCvsD.java
И что выводит программа:
С вами был Salem, на 100 лет проклятый быть криворуким программистом...
В методе createFight() строчки System.out.printn(curDog + " attacks " + curCat) выносятся на уровень выше. Тогда их будет не 9, а 3.
Совет: перед кодом выкладывай скриншот структуры классов.
Еще совет: заведи аккаунт на гитхаб и выкладывай туда код целиком (сделай пакет под каждый урок и коммить изменения в один и тот же проект). Ну и оставляй на него ссылку в конце поста, чтобы те, кто захочет решить задачу, лишь слегка отредактировали его.
Почему нельзя было сделать все через массив с двумя переменными: кошка/собака и худая/нормальная/толстая?
Серьезно блять? Давай еще может GoF по страницам выкладыать на пикабу?