工厂(factory)就是专门用于创建类(product)的类
1. 简单工厂模式
简单工厂模式就是菜鸟教程里介绍的,客户传递一个参数告诉工厂自己想要什么产品,工厂内部通过if else判断返回哪一个产品。
但简单工厂模式是违背OCP原则的。
OCP原则:对扩展开放,对修改封闭
因为如果要生产一个新的产品(product),工厂内部代码就要改变,增加一个 else if 去判断是否要生产这个产品。
这个改变就违背了OCP原则中的对修改封闭
2.抽象工厂模式
抽象工厂是abstract接口,只规定工厂需要实现的方法,新建具体的工厂用于生产特定产品。这样虽然每次都要新建一个新的工厂,但是是对原有(abstract)工厂的扩展,没有修改抽象工厂的内部代码,因此满足OCP原则。
比如java中的Collection就是一个抽象工厂模式的设计
![](https://img.haomeiwen.com/i11440646/9b9ff792a725d6d9.png)
网友评论