我正在尝试了解工厂模式。如果有很多实现,那么我的工厂模式将有很多 if else 或 switch case。而且每次我介绍一个新的实现时,我都应该改变我的工厂代码
就像下面的例子一样,如果让我们假设狗鸭正在实现 Pet 接口,就像明天如果许多动物实现宠物接口,我的工厂会因为很多 if else if 代码或 switch 案例而皱眉。有没有办法通过引入更多动态方法来解决这个问题?
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