23种应用场景举例

上传人:re****.1 文档编号:561803532 上传时间:2023-02-22 格式:DOCX 页数:43 大小:370.90KB
返回 下载 相关 举报
23种应用场景举例_第1页
第1页 / 共43页
23种应用场景举例_第2页
第2页 / 共43页
23种应用场景举例_第3页
第3页 / 共43页
23种应用场景举例_第4页
第4页 / 共43页
23种应用场景举例_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《23种应用场景举例》由会员分享,可在线阅读,更多相关《23种应用场景举例(43页珍藏版)》请在金锄头文库上搜索。

1、目录1【装饰模式应用场景举例】12【策略模式应用场景举例】43【代理模式应用场景举例】84【外观模式应用场景举例】错误!未定义书签。5【抽象工厂模式应用场景举例】错误!未定义书签。6【观察者模式应用场景举例】错误!未定义书签。7【建造者模式应用场景举例】错误!未定义书签。8【原型模式应用场景举例】错误!未定义书签。9【工厂方法模式应用场景举例】错误!未定义书签。10【模板方法模式应用场景举例】错误!未定义书签。1【装饰模式应用场景举例】比方在玩“极品飞车这款游戏,游戏中有对汽车进展喷涂鸦的功能, 而且这个喷涂鸦是可以覆盖的,并且覆盖的顺序也影响到最后车身的显示效果, 假设现在喷涂鸦具有 2 种

2、样式:1红色火焰 2紫色霞光如果使用“继承 父类设计这样的功能,那么类图就像如下的这样:从图中可以看到使用继承来实现这种功能,并且是 2 种涂鸦样式,就需 要创立 4 个子类,如果喷涂鸦有3 种,4 种呢?这种情况就是典型中学课程学习 过的“排列与组合,那简直就是“Head First设计模式书中讲的“类爆炸。显然继承“奥迪汽车类的这个方法是无效,而且是非常徒劳,繁琐的。那么如何才能以“灵活,“顺序敏感这样的需求来实现这样的功能呢?装饰模式解释】类型:构造模式展。动态的对一个对象进展功能上的扩展,也可以对其子类进展功能上的扩【装饰模式UML图】interface Co mponentCon c

3、reteCa mponent+0皆飢4;门7+ope ratio n)+operauon()Concrete De coratorDecoratorTy(e; Sirudurcclassi zor sxte n di fuct enol ty.-addedState+operartion(i 乜I北【装饰模式-JAVA代码实现】新建一个抽象汽车父类:package car_package;public abstract class car_parent / 汽车抽象父类priva te St ring make_address;private int speed;public String g

4、etMake_address()return make_address; public void setMake_address(String make_address) this.make_address = make_address;public int get Speed() return speed;public void setSpeed(int speed) t his.speed = speed;public abstract void print_face();然后新建一个奥迪汽车子类package car_package;public class audi_sub exten

5、ds car_parent /奥迪汽车子类Overridepublic void print_face()System.out.println(audi车默认的颜色为 黑色); 然后再新建一个装饰者父类:package decorator_package;import car_package.car_parent;public abs tract class decorator_parent extends car_parent /装饰者父类 protected car_parent car_parent_ref;public void setCar_parent_ref(car_parent

6、 car_parent_ref) this.car_parent_ref = car_parent_ref; - - - -Overridepublic void pri nt_ face() car_pare nt_ ref.pri nt_ face(); - -然后再新建装饰者子类:红色火焰装饰者类:package decorator_package;public class decorator_audi_red extends decorator_parentOverridepublic void pri nt_ face() super.pri nt_ face();Sys tem.o

7、u t.prin tln(“给奥迪喷涂鸦-颜色为红色 火焰);然后再新建装饰者子类:紫色霞光装饰者类:package decorator_package;public class decorator_audi_purple exte nds decorator_parent Overridepublic void pri nt_ face() super.pri nt_ face();Sys tem.ou t.prin tln(“给奥迪喷涂鸦-颜色为紫色 霞光);新建一个运行类package main_run;import car_package.audi_sub;import decorat

8、or_pack age.decorator_audi_purple;import decorator_package.decorator_audi_re d;public class main_run public static void main(String args) audi_sub audi_sub_ref = new audi_sub(); audi_sub_ref.setMake_address (市 XX 区); audi_sub_ref.se tSpeed(200);decorator_audi_red decorator_audi_red_ref = new d ecora

9、 to r_audi_red();decorator_audi_red_ref.setCar_parent_ref(audi_sub_ref );decorator_audi_purple decorator_audi_purple_ref = new decorator_audi_purple();decorator_audi_purple_ref.setCar_parent_ref(decorator _audi_red_ref);decorator_audi_purple_ref.print_face();程序运行结果如下:audi车默认的颜色为黑色 给奥迪喷涂鸦-颜色为 给奥迪喷涂鸦-

10、颜色为红色火焰 紫色霞光从程序构造中可以看到,完全符合了前面我们的要求:“灵活,“顺 序敏感。2【策略模式应用场景举例】比方在玩“极品飞车这款游戏,那么游戏对车的轮胎是可以更换的, 不同的轮胎在高速转弯时有不同的痕迹样式,那么针对“汽车的配件“轮胎 就要可以变化,而且轮胎和轮胎之间是可以相互替换的,这就是典型的要应用“策略模式的场景!从程序构造中可以看到,完全符合了前面我们的要求:“灵 活,“顺序敏感。【策略模式解释】类型:行为模式定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策 略模式使这些算法在客户端调用它们的时候能够互不影响地变化。【策略模式UML图】【策略模式- JAVA

11、代码实现】从策略模式 UML 图中可以看到 Context 与接口 Strategy 是组合关系,即强引用关系。新建一个轮胎接口:package strategy_interface;public interface tyre_interface / tyre 轮胎public void prin t_t yre_line();/ 显示出轮胎的痕迹新建 2 个轮胎接口的实现类:package strategy_implement;import strategy_interface .tyre_interface ;/长痕迹轮胎类public class tyre_long_implement

12、implements tyre_interface public void print_tyre_line() Sys tem.ou t.prin tln(“在路面上显示一个长轮胎痕迹);package strategy_implement;import strategy_interface .tyre_interface ;/短痕迹轮胎类public class tyre_short_implement implements tyre_interface public void print_tyre_line() Sys tem.ou t.prin tln(“在路面上显示一个短轮胎痕迹);基

13、于一个轮胎接口来实现不同样式的轮胎样式。组装一个 Car 车类:package car_package;import strategy_interface .tyre_interface;public class Car private Stringmake_address;/制造地privateintdeath_year;/报废年限privateintspeed;/ 速度privatetyre_interface tyre_interface_ref;/轮胎的样式public String getMake_address()return make_address;public void se

14、tMake_address(String make_address) this.make_address = make_address;public int getDeath_year()return death_year; public void setDeath_year(int death_year)this.death_year = death_year; public int getSpeed()return speed; public void setSpeed(int speed) t his.speed = speed;public tyre_interface getTyre_interface_ref()return tyre_interface_ref; - -public void setTyre_interface_ref(tyre_interface tyre_inte rface_ref) this .tyre_interface_ref = tyre_interface_ref; - - - - pub

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号