Изучаем паттерны: 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 для каждого нового типа продукта.
На том и откланяюсь.) уж больно спать хочется)












2)
catFactory.getMassFactor(0.0).toJump() // ;P
catFactory.getMassFactor(0.5).toJump() // ;]
catFactory.getMassFactor(1.5).toJump() // ;D
если умышленно - хорошо бы ручные эксепшны высирать. Или хотя бы сообщение об ошибке. А то тупо НПЕ без обьяснений - потом сидишь дебажишь. Особенно если код многопоточный.
3) да и фабрику тогда уж статичной запилить.
4) а где в посте вообще Creator? Подозреваю, что речь о фабрике.
такие мелочи новички неосознанно считают за истину в последней инстанции (хотя и не думают про них). Как и для ребенка родители - инь и янь.
и напомнило старую рекламу женской косметики )