1.项目引入:
2.传统做法:
3.代码实现(部分)
4.传统做法优缺点:
例如:
前面的Orderpizz代码都是if跟else语句,那要是有很多的orderpizz那要改到吐,所以考虑再做一层类(我的理解是缓冲),然后Orderpizz类去实现或者继承,之后改代码只需要改一个类就行了
5.改进思路:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8a7b79590a9c43f7b514e2fbf0ff8259.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD5aS05bCP6YOR77yM,size_20,color_FFFFFF,t_70,g_se,x_16)
下面重头戏三连来了!!!!
(一)简单工厂模式:(也叫静态工厂模式)
1.
![在这里插入图片描述](https://img-blog.csdnimg.cn/b8e1d58b432f4bad956b5992b4080137.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD5aS05bCP6YOR77yM,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/55673a0ae75043c5a7ba21a7bcbf1710.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD5aS05bCP6YOR77yM,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2e546f05fc02484cbf7f8e8a9594a7ed.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD5aS05bCP6YOR77yM,size_20,color_FFFFFF,t_70,g_se,x_16)
2.改进完代码:
![在这里插入图片描述](https://img-blog.csdnimg.cn/efe21ce7d4aa4e049ecacdf8bff9ffd2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD5aS05bCP6YOR77yM,size_20,color_FFFFFF,t_70,g_se,x_16)
(二)工厂方法模式:
1.项目需求引入
![在这里插入图片描述](https://img-blog.csdnimg.cn/c9df9729f55448b4936f0cdef7ec3221.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD5aS05bCP6YOR77yM,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/31acedd25eb94deb8eea7579503b6ce2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD5aS05bCP6YOR77yM,size_20,color_FFFFFF,t_70,g_se,x_16)
类图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/e31cdb8e4dfb49bdaba95c9e550b1822.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD5aS05bCP6YOR77yM,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/cc76de1091ee4932a8739622bc31f05e.png)
OK上面的扩展性又得到了增加,基于类图然后代码实现我们完全可以的!下面引入第三种!
(三)抽象工厂模式
部分代码:
![在这里插入图片描述](https://img-blog.csdnimg.cn/d54ecc1a93d143fb9fa9b5909cbdf566.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56eD5aS05bCP6YOR77yM,size_20,color_FFFFFF,t_70,g_se,x_16)
此图为OrderPizz的代码。
最后来个小结:
个人总结:
在内部创建对象的时候先考虑分层,比如从国家到地区的分层,然后做成接口或者抽象类,具体功能就让子类去实现,这样扩展性就变得很强了