工厂方法模式扩展(一)
这篇博客主要介绍工厂方法模式的两种扩展:简单工厂模式(静态工厂方法模式)和多工厂模式
1. 简单工厂模式
这个模式在我的另一篇博客也写到过:点击查看
简单工厂模式,又叫静态工厂方法模式。它的类图如下:
简单工厂模式,没有抽象的工厂接口,将工厂方法设置为静态方法,直接通过类名调用。它的优点就是足够简单。
与普通的工厂方法模式相比,简单工厂模式的扩展性很差,每次增加一个产品,都需要修改工厂方法,不符合开闭原则。但是,对于长期稳定的工厂来说,使用简单工厂模式也是可以选择的
2. 多个工厂类
因为简单工厂类实现了一个抽象的工厂接口,所以,有多个工厂类实现这个接口是“理所当然的”。可以给每一个产品类都对应一个工厂。就像下面的例子:
每个产品对应一个工厂,非常符合单一职责原则。但这样做也是不推荐的,产品类和工厂类数目相同,维护时需要考虑两个对象之间的关系。
这样的多工厂方式可以用来进行扩展,例如,原来的工厂方法是这样的,现在又来了一个新的需求,需要“生产”三角形,(这个例子在源代码里改也非常简单,但是如果是一个很大的项目,大到很难理清关系,改动源代码是有风险的,所以可以使用符合开闭原则的方式进行扩展)
public class ShapeFactory implements Factory {
/**
* 根据传入的Class类的对象,通过反射创建一个类的实例
*/
@Override
public Shape createShape(String shape) {
Shape s = null;
if(shape.equals("circle")){
s = new Circle();
} else if(shape.equals("square"){
s = new Square();
}
}
}
修改后的类图如下,代码就不写了,没啥意思
来源:CSDN
作者:小码农丨
链接:https://blog.csdn.net/qq2071114140/article/details/103464709