欢迎来到天天文库
浏览记录
ID:17894923
大小:350.99 KB
页数:11页
时间:2018-09-09
《java设计模式-策略模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、题目:Java设计模式-策略模式姓名:苏欣雨学号:2014141463173老师:高伟老师Java设计模式-策略模式苏欣雨2014141463173目录定义2结构3设计原则4开闭原则4封装变化原则4优缺点4优点4缺点4应用举例5源代码及注释5示例一5示例二9总结11定义策略(Strategy)模式:又名Policy,设计模式的作者把策略模式定义如下:Defineafamilyofalgorithms,encapsulateeachone,andmaketheminterchangeable.[The]Strategy[pattern]let
2、sthealgorithmvaryindependentlyfromclientsthatuseit.即:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而变化。其体现了这样两个原则——封装变化和对接口编程而不是对实现编程。策略模式可以独立于使用他们的客户端而变化。结构1)抽象策略(Strategy)角色:抽象策略角色由抽象类或接口来承担,它给出具体策略角色需要实现的接口;2)具体策略(ConcreteStrategy)角色:实现封装了具体的算法或行为;3)场景(环境)(Cont
3、ext)角色:持有抽象策略类的引用。设计原则开闭原则策略模式是开闭原则的体现,开闭原则讲的是一个软件实体应该对扩展开放对修改关闭。策略模式在新的策略增加时,不会影响其他类的修改,增加了扩展性,也就是对扩展是开放的;对于场景来说,只依赖于抽象,而不依赖于具体实现,所以对修改是关闭的。封装变化原则策略模式在设计时是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(C++中可以用虚类),然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。策略模式重点就是封装不同的算法和行为,不同的场景下可以相互
4、替换。也就是说如果一个程序的每个场景的算法相同也就没有必要使用策略模式了。优缺点优点1)将整个软件构建为可互换部分的松耦合的集合,而不是单一的紧耦合系统。在遵守大部分GRASP原则和常用设计原则的同时实现了高内聚,低耦合,使得软件可扩展性更好,更易于维护且重用性好2)提供管理相关算法族的方法3)提供了一种替代继承的方法,而且既保持了继承的优点(代码重用)还比继承更灵活(算法独立,可以任意扩展)4)可以避免多重条件判断语句的使用缺点1)客户端必须知道所有的策略类2)由于类的增多,是系统需要进行维护的类更多应用举例刘备要到江东娶老婆了,走之前诸
5、葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开能解决棘手问题,最后使周瑜赔了夫人又折兵,那咱们先看看这个场景是什么样子的。先说说这个场景中的要素:三个妙计,一个锦囊,一个赵云。在不同的场景下赵云打开不同的锦囊,便化险为夷,锦囊便是抽象策略,具体的锦囊里面的计策便是具体的策略角色,而他们变化的处境就是不同的场景即环境。源代码及注释示例一三个妙计是同一类型的东西,所以写一个接口:packagecom.yangguangfu.strategy;/****@authortrygf521@126.com:*首先定义一个策略接口,这是诸葛亮老人家给赵云
6、的三个锦囊妙计的接口。*/publicinterfaceIStrategy{//每个锦囊妙计都是一个可执行的算法。publicvoidoperate();}然后再写三个实现类,因为有三个妙计,即用三种不同的算法:妙计一:初到吴国:packagecom.yangguangfu.strategy;/****@authortrygf521@126.com:*找乔国老帮忙,使孙权不能杀刘备。*/publicclassBackDoorimplementsIStrategy{@Overridepublicvoidoperate(){System.out
7、.println("找乔国老帮忙,让吴国太给孙权施加压力,使孙权不能杀刘备...");}}妙计二:求吴国太开个绿灯,放行:packagecom.yangguangfu.strategy;/****@authortrygf521@126.com:*求吴国太开个绿灯。*/publicclassGivenGreenLightimplementsIStrategy{@Overridepublicvoidoperate(){System.out.println("求吴国太开个绿灯,放行!");}}妙计三:孙夫人断后,挡住追兵:packagecom.y
8、angguangfu.strategy;/****@authortrygf521@126.com:*孙夫人断后,挡住追兵。*/publicclassBlackEnemyimple
此文档下载收益归作者所有