Изучаем паттерны: Cat Factory Method⁠⁠

Цель паттерна:

Создается специфический класс - интерфейс базового абстрактного класса (создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не тела методов). Конкретная реализация класса-наследника определяется тем, какие параметры были переданы при создании.


Это позволяет использовать в коде программы не специфические классы, а манипулировать абстрактными объектами на более высоком уровне.


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


- класс не имеет информации о том, какой тип объекта он должен создать;

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

- необходимо создать объект в зависимости от входящих данных.


Реализация класса:

Создается класс-интерфейс Cat и реализацию его функций в потомках класса Cat. Далее создается класс-фабрика CatFactory.


Класс CatFactoryDemo использует класс-фабрику CatFactory для создания объектов класса Cat. Мы передаем параметр - коэффициент веса кота, для определения того, какой кот будет создан с помощью функции getCatMassFactor().

Шаг первый:


Создаем класс-интерфейс Cat.java

Шаг второй:

Создаем классы, имеющие интерфейс Cat и реализацией метода toJump()


ThinCat.java

NormalCat.java

FatCat.java

Шаг третий:

Создаем класс-фабрику CatFactory для генерирования различных объектов класса Cat на основе переданной в класс-фабрику CatFactory информации.


CatFactory.java

Шаг четвертый:

Создаем класс CatFactoryDemo, который использует класс-фабрику CatFactory для создания объектов класса Cat.


CatFactoryDemo.java

Программа выведет результат:


ThinCat has jumped-up like a bird.

NormalCat has jumped-up.

FatCat can't jump.

Главный минус метода - необходимость создавать наследника Creator для каждого нового типа продукта.

На том и откланяюсь.) уж больно спать хочется)

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

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

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

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

В целом норм. Хотя, конечно, не нужно принимать статью за непреклонную истину (есть неточности и опечатки), а зайти еще, скажем, сюда: https://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE... (там список паттернов и на их страницах есть реализация на Java), ну и подумать еще самому, потому что фабрику используют почти в каждой программе и нужно хорошо расшарить особенности ее реализации:


1) Комментатор выше уже написал про статичную фабрику. Также есть вариант сделать ее синглтоном (еще один супер-важный паттерн).

2) Надо убрать модификатор public у классов Thin, Normal и FatCat. Тогда с этими классами будет работать лишь фабрика, а другим про их существование знать необязательно.

3) null в фабрике возвращать не стоит, потому что ситуация исключительная. Лучше выбросить какой-нибудь IllegalArgumentException, если масса <= 0.


Главный минус метода - необходимость создавать наследника Creator для каждого нового типа продукта.

Это предложение удалить надо.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Редактировать уже нельзя
Иллюстрация к комментарию
показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества