第二章 设计模式(常用).ppt
上传人:qw****27 上传时间:2024-09-11 格式:PPT 页数:70 大小:2MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第二章 设计模式(常用).ppt

第二章设计模式(常用).ppt

预览

免费试读已结束,剩余 60 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

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