举例
简单工厂模式严格意义上来说,并不属于设计模式中的一种,不过这里还是简单记录下。
定义: 由一个工厂对象决定创建出哪一种类型实例。客户端只需传入工厂类的参数,无需关心创建过程。
优点: 具体产品从客户端代码抽离出来,解耦。
缺点: 工厂类职责过重,增加新的类型时,得修改工程类的代码,违背 开闭原则。
举例:
1、新建Fruit水果抽象类,包含eat抽象方法:
public abstract class Fruit {
public abstract void eat();
}
2、其实现类Apple:
public class Apple extends Fruit {
@Override
public void eat() {
System.out.println("蘋果");
}
}
3、新建创建Fruit的工厂类:
public class FruitFactory {
public Fruit product(String name) {
if ("apple".equals(name)) {
return new Apple();
} else {
return null;
}
}
}
4、新建个客户端测试一下:
public class WipeApplication {
public static void main(String[] args) {
// Apple apple = new Apple();
// apple.eat();
FruitFactory fruitFactory = new FruitFactory();
Fruit fruit = fruitFactory.product("apple");
fruit.eat();
}
}
可以看到,客户端Application并未依赖具体的水果类型,只关心FruitFactory的入参,这就是客户端和具体产品解耦的体现。