1.定义
策略模式是一种行为型模型,三国演义中有这样一个桥段,刘备被周瑜设计引到江东,周瑜想让刘备入赘,然后威胁关张赵以及诸葛让出荆州,不料诸葛孔明早有准备,准备了三个锦囊给赵云在需要时候以此打开锦囊。
三个锦囊妙计分别如下
锦囊妙计1,找乔国老帮忙,不杀刘备。
锦囊妙计2,求吴国太开个绿灯,放行!
锦囊妙计3,孙夫人断后,挡住追兵
每一种锦囊对应不同的策略,也就是不同的算法,这样刘备才知道怎么应对。果然诸葛孔明真乃神人也。
2.策略结构图
InterfaceStrategy是策略的接口定义策略应该所具备的行为,比如打开锦囊,GivenGreenLightStrategy、BackDoorStrategy、BlockEnemyStrategy分别是策略的具体实现,表示具体的策略,也就是三个锦囊妙计;Content是具体装锦囊以及执行锦囊的。
3.策略模式实现
InterfaceStrategy接口定义锦囊的行为,其中operate方法就是每个锦囊都应该具备的方法,即对应的妙计。
BackDoorStrategy是具体的妙计实现,其中表示第一个妙计,找乔国老帮忙让吴国太给孙权施加压力。
GivenGreenLightStrategy也是具体的妙计实现,其中表示第二个妙计,求吴国太开个绿灯,放行!
BlockEnemyStrategy也是具体的妙计实现,其中表示第三个妙计,孙夫人断后,挡住追兵。
Content用于存放锦囊和执行锦囊,有了这么多锦囊妙计至少需要来执行以及存放吧。
现在三国演义序幕正式拉开,可以通过下面的测试代码看到,Test就是赵云分别打开了三个锦囊,并且顺利的破解了周郎小儿的计谋。这是应了那句周郎妙计安天下,赔了夫人又折兵。
策略模式优缺点
优点:
1、策略模式符合开闭原则。
2、避免使用多重条件转移语句,如if...else...语句、switch 语句 3、使用策略模式可以提高算法的保密性和安全性。
缺点:
1、客户端必须知道所有的策略,并且自行决定使用哪一个策略类。
2、代码中会产生非常多策略类,增加维护难度。
参考文献《设计模式之禅》
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有