推荐阅读:
由于面向对象总结的也差不多了,今天来总结下策略模式。
在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。
大家不要看着有“算法”2个字就觉得特别深奥,因为以上2句话好像是官方的。
稍微通俗一点的个人理解的策略模式就是如何组织、调用或者说是管理这些接口(而至于接口的实现类到底是谁不需要理会也就是所谓的封装的算法吧),从而让程序结构更灵活,具有更好的维护性和扩展性。
算法(接口的实现类)可以自由的切换,通过实现抽象策略,通过封装角色对其封装,保证对外提供“可自由切换”的策略。
避免使用多重条件判断,如果有多重策略,那么每个策略只需实现自己的方法,至于采用何种策略,可以通过其他模块决定。
扩展性良好,可以在现有的系统中任意的加入新的策略,符合OCP原则。
1. 策略类数量增多,每个策略都是一个类,复用的可能性很小,类数量增多。
2. 所有的策略都需要对外暴露,上层模块必须知道有哪些策略,然后才能知道采用哪种策略,可以通过使用工厂方法模式、代理模式和享元模式修正。
下面给大家列举一个简单的例子吧,为了使大家看的清晰明了 直接用中文编码了,不建议大家这么编码。
1. 创建一个内存的接口,并且创建2个不同的厂家类来继承内存接口
如图:
2.在创建一个电脑类,类成员变量使用内存接口类型,并且生成get/set方法。最后根据传入的对象来打印出生产厂家。
如图
这样设计的话,后期如果有新的厂家的话,我们只需要加一个新的内存实现类,然后用c.set内存();赋值新的内存实现类的对象,再调用c.现市场价内存条();方法就直接切换到新的内存厂家了。以上就是最简单的策略模式例子了
大家可以把以上的例子转变一下做个小练习,使用动物类,和吃饭接口,然后创建2个吃饭的实现类。
公众号资源免费分享!!!
2017年某培训班最新视频+几十个项目免费分享 公众号输入“我要视频”
联系客服