Я пытаюсь понять шаблон factory. Если существует много реализаций, тогда у моего шаблона factory будет много случаев if else или switch. А также каждый раз, когда я представляю новую реализацию, я должен изменить свой код factory
Как и в приведенных ниже примерах, если позволить предположить, что утка собаки реализует интерфейс для домашних животных, например, завтра, если многие животные реализуют интерфейс для домашних животных, мой factory долгое время держится с большим количеством if else else, если код или случай переключения. Есть ли способ решить эту проблему с помощью более динамичного подхода?
package com.javapapers.sample.designpattern.factorymethod;
//Factory method pattern implementation that instantiates objects based on logic
public class PetFactory {
public Pet getPet(String petType) {
Pet pet = null;
// based on logic factory instantiates an object
if ("bark".equals(petType))
pet = new Dog();
else if ("quack".equals(petType))
pet = new Duck();
return pet;
}
Если животные растут
if ("bark".equals(petType))
pet = new Dog();
else if ("quack".equals(petType))
pet = new Duck();
else if ("mno".equals(petType))
pet = new MNO();
else if ("jkl".equals(petType))
pet = new JKL();
else if ("ghi".equals(petType))
pet = new GHI();
else if ("def".equals(petType))
pet = new DEF();
......
else if ("abc".equals(petType))
pet = new ABC();
return pet