9.设计模式--策略模式(Strategy模式)

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、代码中会产生非常多策略类,增加维护难度。

参考文献《设计模式之禅》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值