菜鸟教程链接:工厂模式
概念
工厂模式属于创建型设计模式,对于某一类对象,通过工厂模式,我们可以对于客户端屏蔽实现类内部的初始化逻辑,客户端只需要通过名称即可通过工厂类获取到对应的实例化的子类对象。一般配合策略模式使用,通过不同的条件返回不同的子类对象或某一业务接口的不同实现类。
示意图:
优缺点
优点:
- 一个调用者想创建一个对象,只要知道其名称就可以了。
- 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
- 屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。
示意代码
public class ShapeFactory {
//使用 getShape 方法获取形状类型的对象
public Shape getShape(String shapeType){
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
} else if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
} else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
return null;
}
}