前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >9.设计模式--策略模式(Strategy模式)

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

作者头像
大猫的Java笔记
发布2021-11-01 16:16:56
2410
发布2021-11-01 16:16:56
举报
文章被收录于专栏:大猫的Java笔记大猫的Java笔记

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大猫的Java笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档