大佬教程收集整理的这篇文章主要介绍了23种设计模式之策略模式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
定义: 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换
通俗的说,就是对一个接口下的一组算法进行封装
其类图如下:
title="23种设计模式之策略模式" alt="23种设计模式之策略模式" src="https://cn.js-code.com/res/2019/01-10/21/ba6ed6f61a0b13031c84dea3a2d546f3.jpg" >
其中三个角色说明:
策略模式的重点就是封装角色,它借用了代理模式的思路,差别就是策略模式的封装角色和被封装的策略类不用是同一个接口,如果是同一个接口就成了代理模式
代码如下:
抽象的策略角色:
title="23种设计模式之策略模式" alt="23种设计模式之策略模式" src="https://cn.js-code.com/res/2019/01-10/21/f698338ab309ce20723059729df69b48.jpg" >
具体的策略角色:
title="23种设计模式之策略模式" alt="23种设计模式之策略模式" src="https://cn.js-code.com/res/2019/01-10/21/c98b3eea709909c52256251e63bef045.jpg" >
封装角色:
title="23种设计模式之策略模式" alt="23种设计模式之策略模式" src="https://cn.js-code.com/res/2019/01-10/21/686985edfc0ac2b00a87110d18545421.jpg" >
场景类:
title="23种设计模式之策略模式" alt="23种设计模式之策略模式" src="https://cn.js-code.com/res/2019/01-10/21/ac7db1e1257680060d1d0be320894008.jpg" >
策略模式的优点:
策略模式的缺点:
策略模式的使用场景:
如果系统中的一个策略家族的具体策略数量超过4个,则需要考虑使用混合模式,解决策略类膨胀和对外暴露的问题,否则日后的系统维护就会成为一个烫手山芋,谁也不想接
策略模式是一个非常常用的模式,但它单独使用的地方就比较少了,因为他有致命缺陷: 所有的策略都需要暴露出去,这样才方便客户端使用哪一个策略. 在实际项目中,我们一般通过工厂方法模式来实现策略类的声明.
以上是大佬教程为你收集整理的23种设计模式之策略模式全部内容,希望文章能够帮你解决23种设计模式之策略模式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。