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 подписчиков

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

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

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

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

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

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

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

Так не интересно будет. Впрочем, можно было показать свойства сравнения объектов с помощью интерфейса Comparable: например, отсортировать этот массив.

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

Это будет уже не ООП программирование. Примеры специально на столько простые, чтобы можно было разобраться в алгоритме паттерна, по-жизни все будет посложнее.)

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

У нас на работе программисты на С пишут простой, понятный и быстрый код.

А программисты на С++ выдают кучу текста, кучу файлов, все это весит мегабайты! Особенно радуют файлы в которых вообще ничего не происходит. И чтобы все хотя бы прочитать, не то что бы понять, уйдут недели.

Так что я не понимаю зачем нужен С++.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку