工厂模式:
实现了创建者与调用者的离
详细分类:
简单工厂模式
用来生产同一等级结构中的任意产品,对于增加新产品,需要修改已有代码
工厂方法模式
用来生产同一等级结构中的固定产品,支持增加任意产品
抽象工厂模式
用来生产不同产品族的全部产品,对于增加新的产品,无能为力,支持增加产品族
面向对象设计的基本原则:
OCP(开闭原则, Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。
DIP(依赖倒转原则,Dependence Incersion Principle):要针对接口编程,不要针对实现编程。
LoD(迪米特法则, Law if Demeter):只与你直接的朋友通信,而避免和陌生人通信
核心本质:
实例化对象,用工厂方法代替new 操作
将选择实现类,创建对象统一管理和控制,从而将调用者与实现类解耦
简单工厂模式:
工厂方法模式
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203509174-1180752728.png)
- 工厂接口
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203509387-613945568.png)
- 奥迪工厂类
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203509615-1723748462.png)
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203509833-130941126.png)
- 测试类
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203510154-199537808.png)
当需要增加产品时,增加一个相应的类和相应的工厂类
抽象工厂模式:
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203510391-1073832539.png)
Seat接口及实现类
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203510625-1802742302.png)
Tyre接口及实现类
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203510833-260845660.png)
工厂接口
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203511022-229321647.png)
工厂实现类(组装工厂)
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203511400-119694087.png)
测试类
![](https://img2020.cnblogs.com/blog/892740/202012/892740-20201220203511625-1190771183.png)
当我们需要不同的产品时,只需要实现工厂接口来组装不同型号的产品