如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第二章模式设计(常用)目录策略模式策略模式【StrategyPatternpackagecom.slxy.strategy;*首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口**/publicinterfaceIStrategy{//每个锦囊妙计都是一个可执行的算法publicvoidoperate();}packagecom.slxy.strategy;/***找乔国老帮忙,使孙权不能杀刘备*/publicclassBackDoorimplementsIStrategy{publicvoidoperate(){System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");}}packagecom.slxy.strategy;/***求吴国太开个绿灯*/publicclassGivenGreenLightimplementsIStrategy{publicvoidoperate(){System.out.println("求吴国太开个绿灯,放行!");}}packagecom.slxy.strategy;/***孙夫人断后,挡住追兵*/publicclassBlockEnemyimplementsIStrategy{publicvoidoperate(){System.out.println("孙夫人断后,挡住追兵");}}packagecom.slxy.strategy;/***计谋有了,那还要有锦囊*/publicclassContext{//构造函数,你要使用那个妙计privateIStrategystraegy;publicContext(IStrategystrategy){this.straegy=strategy;}//使用计谋了,看我出招了publicvoidoperate(){this.strategy.operate();}}packagecom.slxy.strategy;publicclassZhaoYun{/***赵云出场了,他根据诸葛亮给他的交代,依次拆开妙计*/publicstaticvoidmain(String[]args){Contextcontext;//刚刚到吴国的时候拆第一个System.out.println("-----------刚刚到吴国的时候拆第一个-------------");context=newContext(newBackDoor());//拿到妙计context.operate();//拆开执行System.out.println("\n\n\n\n\n\n\n\n");//刘备乐不思蜀了,拆第二个了System.out.println("-----------刘备乐不思蜀了,拆第二个了-------------");context=newContext(newGivenGreenLight());context.operate();//执行了第二个锦囊了System.out.println("\n\n\n\n\n\n\n\n");//孙权的小兵追了,咋办?拆第三个System.out.println("-----------孙权的小兵追了,咋办?拆第三个-------------");context=newContext(newBlockEnemy());context.operate();//孙夫人退兵System.out.println("\n\n\n\n\n\n\n\n");}}就这三招,搞的周郎是“陪了夫人又折兵”呀!这就是策略模式,高内聚低耦合的特点也表现出来了,还有一个就是扩展性,也就是OCP原则,策略类可以继续增加下去,只要修改Context.java就可以了。先定义类型:packagecom.slxy.proxy;/***/publicinterfaceKindWomen{//这种类型的人能做什么事情呢?publicvoidromantic();//追求浪漫publicvoidhappy();//寻找幸福的归属}代理模式为其他对象提供一种代理以控制对这个对象的访问。Provideasurrogateorplaceholderforanotherobjecttocontrolaccesstoitpackagecom.cbf.proxy;publicinterfaceKindWomen{publicvoidromantic();publicvoidhappy();}packagecom.cbf.proxy;publicclassPan