在原有代码基础上,如何一步步通过设计模式去优化代码?日常工作中,我们用得最多的设计模式,就是策略模式、工厂模式和模板方法模式啦。,大家先看下,优化前,原有代码的大概逻辑哈。代码如下:,这个代码可能存在哪些问题呢?,说得专业一点点,就是以上代码,违背了面向对象的开闭原则和单一原则。,回忆一下,什么是策略模式呢?,策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的的客户。这个策略模式的定义是不是有点抽象呢?打个通俗易懂的比喻:,策略模式针对一组算法,将每一个算法封装到实现共同接口的不同独立的类中,从而使得它们可以相互替换。策略模式我们一般是怎么定义的呢?,所以,对于原有的伪代码流程,我们就可以定义企业客群类型的策略实现类,和市场营销类型的策略实现类。这两个策略实现类都实现了两个方法,一个方法是匹配类型的,就是返回原始代码if…else条件判断的类型;然后另外个方法,就是if…else条件的实现内容。代码如下:,每个策略现在都实现好了,不同策略的实现类怎么交给spring管理呢?,我们可以实现ApplicationContextAware接口,把策略的实现类注入到一个map,然后根据请求方不同的策略请求类型,去实现不同的调用嘛,其实就是类似于工厂模式的思想啦。代码如下:,有了策略模式+工厂方法模式后,我们伪代码流程简化成这样啦:,小伙伴们,细心回头观察下原先的伪代码流程,会发现一个共性的代码流程,就是先开关控制,然后根据请求数量决定走单笔调用还是批量调用。,这就可以使用模板方法继续优化了。所谓模板方法模式,其实就是:,为了通俗易懂一点,打个比喻:,模板方法使用比较简单:,我们只需要把开关控制接口,单笔远程调用、批量远程调用这个通用共性的流程,定义到模板抽象类就好啦。代码如下:,不同的策略子类自己控制开关,和控制不同接口的调用即可。,策略模式、工厂模式和模板方法模式这三种设计模式,是日常开发用得最多的。本文呢,也是阐述了我是如何在原有代码上,抽取出设计模式的,大家可以应用到自己的工作中去哈。
© 版权声明
文章版权归作者所有,未经允许请勿转载。