Java设计模式——简单工厂+策略模式
前面两篇讲解了简单工厂模式和策略模式,可以发现,这两种模式虽然提高了代码的可读性,但还是存在大量的重复代码,那么是否可以将两种模式组合,取其精华去其糟粕。在对两种模式进行组合前,我们可以先用UML图来看看两个模式有什么不一样的。二、UML图我们经常提到UML图,但是很少将代码和业务结合后,进行画图分析,其实这也是很重要的一环,加深我们对模式的理解以及业务分析的能力。
Java设计模式——简单工厂+策略模式
一、前言
前面两篇讲解了简单工厂模式和策略模式,可以发现,这两种模式虽然提高了代码的可读性,但还是存在大量的重复代码,那么是否可以将两种模式组合,取其精华去其糟粕。在对两种模式进行组合前,我们可以先用UML图来看看两个模式有什么不一样的。
二、UML图
我们经常提到UML图,但是很少将代码和业务结合后,进行画图分析,其实这也是很重要的一环,加深我们对模式的理解以及业务分析的能力
1)简单工厂模式UML图
2)策略模式UML图
3)两者结合
从上面两个UML图看,好像大差不差。想想简单工厂的特点(隐藏了创建对象的过程)、策略模式(无需修改环境类,拓展强)
看看策略模式的这段代码
是不是可以创建豆浆和面包的类放到环境类中的构造方法去实现,客户端只需要告诉环境类需要什么早餐就可以
三、改造后的代码实现
在所有的代码中我们只需要改造环境类,改造后代码如下
客户端的调用变化
四、总结
虽然两个模式结合后,看不出来不同点,但是细看之后会发现,组合后,客户端只关心环境类即可,简单工厂的客户端则需要知道工厂类和早餐对象,也就是两者组合后我们对代码细节进行隐藏,在开发中,客户知道的细节越少越好,只关心结果,过程越简单越好,也是我们开发者在做项目对接的时候(比如跟其他第三方平台做对接,我们压根就不想知道别人是怎么实现的,只想传最少的参数拿到最直接的数据)
两者的结合在客户端隐藏了细节,但是还不是很完美。在策略模式中我们说过这个模式虽好,但是比较单一,这还是需要思考和解决的地方。
更多推荐
所有评论(0)