Abstarct Factory Pattern

Тип: порождающий шаблон


Назначение: обеспечивает создание семейств взаимосвязанных или зависящих друг от друга

объектов без указания их конкретных классов.

Является развитием паттерна Factory Method.

Используется в следующих случаях:

- система не должна зависеть от способа создания объектов;

- система работает с одним из нескольких семейств объектов;

- объекты внутри семейства взаимосвязаны.


Программа обращается к классу-конструктору фабрик FactoryProducer, создавая два класса-фабрики CatFactory и DogFactory - наследники с реализацией абстрактного класса AbstractFactory. Классы фабрики создают 3 объекта класса Cat и 3 объекта класса Dog.

Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост

Создаем классы-интерфейсы Cat и Dog:

Cat.java, Dog.java

Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост
Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост

Создаем наследников класса Cat с реализацией его функций:

ThinCat.java, NormalCat.java, FatCat.java

Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост

Создаем наследников класса Dog с реализацией его функций:

ThinDog.java, NormalDog.java, FatDog.java

Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост

Создаем абстрактный класс AbstractFactory:

AbstractFactory.java

Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост

Создаем классы-фабрики CatFactory и DogFactory:

CatFactory.java, DogFactory.java

Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост

Создаем класс-конструктор фабрик FactoryProducer:

FactoryProducer.java

Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост

Основной класс AbstractFactoryPatternCvsD:

AbstractFactoryPatternCvsD.java

Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост
Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост

И что выводит программа:

Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост

С вами был Salem, на 100 лет проклятый быть криворуким программистом...

Abstarct Factory Pattern Java, Паттерны, Программирование, Длиннопост

Задачки для изучающих Java

43 поста1.8K подписчика

Добавить пост

Правила сообщества

Прошу воздержаться от взаимных оскорблений.

Больше позитива, ведь программирование - это весело)

2
Автор поста оценил этот комментарий

В методе createFight() строчки System.out.printn(curDog + " attacks " + curCat) выносятся на уровень выше. Тогда их будет не 9, а 3.

Совет: перед кодом выкладывай скриншот структуры классов.

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

раскрыть ветку
Автор поста оценил этот комментарий

Почему нельзя было сделать все через массив с двумя переменными: кошка/собака и худая/нормальная/толстая?

раскрыть ветку
1
Автор поста оценил этот комментарий

Серьезно блять? Давай еще может GoF по страницам выкладыать на пикабу?

раскрыть ветку