- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java设计模式策略模式
题目:Java设计模式-策略模式姓名:苏欣雨 学号:2014141463173 老师:高伟老师Java设计模式-策略模式苏欣雨2014141463173目录定义2结构3设计原则4开闭原则4封装变化原则4优缺点4优点4缺点4应用举例5源代码及注释5示例一5示例二9总结11定义策略(Strategy)模式:又名Policy,设计模式的作者把策略模式定义如下:Define a family of algorithms, encapsulate each one, and make them interchangeable. [The] Strategy [pattern] lets the algorithm vary independently from clients that use it. 即:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而变化。其体现了这样两个原则——封装变化和对接口编程而不是对实现编程。策略模式可以独立于使用他们的客户端而变化。结构抽象策略(Strategy)角色:抽象策略角色由抽象类或接口来承担,它给出具体策略角色需要实现的接口;具体策略(Concrete Strategy)角色:实现封装了具体的算法或行为;场景(环境)(Context)角色:持有抽象策略类的引用。设计原则开闭原则策略模式是开闭原则的体现,开闭原则讲的是一个软件实体应该对扩展开放对修改关闭。策略模式在新的策略增加时,不会影响其他类的修改,增加了扩展性,也就是对扩展是开放的;对于场景来说,只依赖于抽象,而不依赖于具体实现,所以对修改是关闭的。封装变化原则策略模式在设计时是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(C++中可以用虚类),然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。策略模式重点就是封装不同的算法和行为,不同的场景下可以相互替换。也就是说如果一个程序的每个场景的算法相同也就没有必要使用策略模式了。优缺点优点将整个软件构建为可互换部分的松耦合的集合,而不是单一的紧耦合系统。在遵守大部分GRASP原则和常用设计原则的同时实现了高内聚,低耦合,使得软件可扩展性更好,更易于维护且重用性好提供管理相关算法族的方法提供了一种替代继承的方法,而且既保持了继承的优点(代码重用)还比继承更灵活(算法独立,可以任意扩展)可以避免多重条件判断语句的使用缺点客户端必须知道所有的策略类由于类的增多,是系统需要进行维护的类更多应用举例刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开能解决棘手问题,最后使周瑜赔了夫人又折兵,那咱们先看看这个场景是什么样子的。先说说这个场景中的要素:三个妙计,一个锦囊,一个赵云。在不同的场景下赵云打开不同的锦囊,便化险为夷,锦囊便是抽象策略,具体的锦囊里面的计策便是具体的策略角色,而他们变化的处境就是不同的场景即环境。源代码及注释示例一三个妙计是同一类型的东西,所以写一个接口:package com.yangguangfu.strategy; /** * * @author trygf521@126.com: * 首先定义一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口。 */ public interface IStrategy { //每个锦囊妙计都是一个可执行的算法。 public void operate(); } 然后再写三个实现类,因为有三个妙计,即用三种不同的算法: 妙计一:初到吴国:package com.yangguangfu.strategy; /** * * @author trygf521@126.com: * 找乔国老帮忙,使孙权不能杀刘备。 */ public class BackDoor implements IStrategy { @Override public void operate() { System.out.println(找乔国老帮忙,让吴国太给孙权施加压力,使孙权不能杀刘备...); } } 妙计二:求吴国太开个绿灯,放行:package com.yangguangfu.strategy; /** * * @author trygf521@126.com: * 求吴国太开个绿灯。 */ public class GivenGreenLight implements IStrategy { @Override public void operate() { System.out.println(求吴国太开个绿灯,放行!);
您可能关注的文档
- iPhoneS怎样使用新版QQ的健康助手.doc
- iphones剪卡器iphone剪卡教程图文详解.doc
- iPhoneS应用隐藏简单教程.docx
- “公共标志和说明”英语表达句.doc
- iPhones抢购技巧购买iPhones注意事项.docx
- iPhones怎样添加Emoji表情.doc
- iPhoneS怎样打开虚拟操作键.doc
- iphones最全入门使用教程.doc
- iPhoneS换电池教程图文详解.doc
- iPhoneS植入公交卡门禁卡详细教程.docx
- 4《猜字谜》课件(共30张PPT).pptx
- 统编版语文二年级上册第三单元复习课件(共50张PPT).pptx
- 2025-2026学年山西大学附中高三上学期10月月考数学试题及答案(总第四次).docx
- 第四单元《逻辑的力量》课件(共57张PPT)2025-2026学年统编版高中语文选择性必修上册.pptx
- 2025-2026学年山西大学附中高三上学期10月月考历史试题及答案(总第四次).docx
- 统编版语文四年级下册习作 游______课件(共27张PPT).pptx
- 统编版四年级语文下册第六单元习作:我学会了___课件(共31张PPT).pptx
- 16.1《赤壁赋》课件(共59张PPT)2025—2026学年统编版高中语文必修上册.pptx
- 统编版四年级语文下册口语交际:朋友相处的秘诀 课件(共20张PPT).pptx
- 统编版五年级下册语文园地四 课件(共30张PPT).pptx
原创力文档


文档评论(0)