简单工厂模式
简单工厂模式并不属于GoF归纳的23个经典的设计模式,更像是工厂方法模式(Factory Method Pattern)的一种变体。简单工厂模式又称为静态工厂方法(Static Factory Method)模式,也用于对象的创建。
使用场景
上一节介绍了工厂方法模式,但是有时候并不需要那么多工厂生产,可能只需要一个工厂类就足够了,这个时候我们可以修改一下工厂方法模式中的结构,去掉抽象工厂类,只要一个具体的工厂,并将工厂中的生产方法设置成静态类型的,就可以满足我们新的需求。
简单工厂模式实现(Implement)
结构
按照上面所说,对工厂方法模式的结构进行修改,结构如下
Shape
– Product的抽象类Circle或者Square等等
– ConcreteProduct的具体类ShapeFactory
– 去掉抽象的工厂类,只有这一个工厂
– 提供静态的CreateShape方法进行生产Product
代码
Shape类还是跟上一节一样
Circle类
Square类
简单工厂类
调用简单工厂
总结
简单工厂模式并不是23种设计模式中的一种,但是还是有它的应用场景。
简单工厂模式的优点
- 客户端(调用者)没有直接去创建产品对象,还是将生产对象的工作交给工厂来完成,客户端只是来”消费”产品。
- 相比较工厂方法,更加简单,适用于某些场景。
简单工厂模式的缺点
- 简单工厂集中了所有产品的创建逻辑,一旦不能正常工作,整个系统都会受到影响。
- 扩展比较麻烦,如果增加新产品就得去修改工厂的逻辑,而在产品越来越多的情况下,工厂的逻辑就会显得十分复杂,而工厂方法模式通过继承抽象工厂的方式来增加产品,具有更加良好的扩展性。