23种应用场景举例Word格式文档下载.docx

上传人:b****4 文档编号:6483847 上传时间:2023-05-06 格式:DOCX 页数:39 大小:197.46KB
下载 相关 举报
23种应用场景举例Word格式文档下载.docx_第1页
第1页 / 共39页
23种应用场景举例Word格式文档下载.docx_第2页
第2页 / 共39页
23种应用场景举例Word格式文档下载.docx_第3页
第3页 / 共39页
23种应用场景举例Word格式文档下载.docx_第4页
第4页 / 共39页
23种应用场景举例Word格式文档下载.docx_第5页
第5页 / 共39页
23种应用场景举例Word格式文档下载.docx_第6页
第6页 / 共39页
23种应用场景举例Word格式文档下载.docx_第7页
第7页 / 共39页
23种应用场景举例Word格式文档下载.docx_第8页
第8页 / 共39页
23种应用场景举例Word格式文档下载.docx_第9页
第9页 / 共39页
23种应用场景举例Word格式文档下载.docx_第10页
第10页 / 共39页
23种应用场景举例Word格式文档下载.docx_第11页
第11页 / 共39页
23种应用场景举例Word格式文档下载.docx_第12页
第12页 / 共39页
23种应用场景举例Word格式文档下载.docx_第13页
第13页 / 共39页
23种应用场景举例Word格式文档下载.docx_第14页
第14页 / 共39页
23种应用场景举例Word格式文档下载.docx_第15页
第15页 / 共39页
23种应用场景举例Word格式文档下载.docx_第16页
第16页 / 共39页
23种应用场景举例Word格式文档下载.docx_第17页
第17页 / 共39页
23种应用场景举例Word格式文档下载.docx_第18页
第18页 / 共39页
23种应用场景举例Word格式文档下载.docx_第19页
第19页 / 共39页
23种应用场景举例Word格式文档下载.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

23种应用场景举例Word格式文档下载.docx

《23种应用场景举例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《23种应用场景举例Word格式文档下载.docx(39页珍藏版)》请在冰点文库上搜索。

23种应用场景举例Word格式文档下载.docx

static 

void 

main(String[] 

args) 

tyre_long_implement 

new 

tyre_long_implement();

tyre_short_implement 

tyre_short_implement();

Car 

car 

Car();

(8);

("

北京朝阳区"

);

(200);

(tyre_long_implement);

();

控制台打印出:

车的基本信息为:

制造地make_address:

北京朝阳区

报废年限death_year:

8

速度speed:

200

起动了!

Car高速行驶,遇到一个大转弯,路面显示:

在路面上显示一个长轮胎痕迹

是一个长轮胎痕迹,但在程序中可以使用代码:

(tyre_long_implement);

来对轮胎的样式进行不同的替换,可以替换成短轮胎痕迹的汽车轮胎,这样在不更改Car类的前题下进行了不同轮胎样式的改变,轮胎和轮胎之间可以互相替换,这就是策略模式。

3【代理模式应用场景举例】

比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。

从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OOP编程的思想来考虑软件的类结构,这个销售汽车的代理也是一个类了。

【代理模式解释】

对一些对象提供代理,以限制那些对象去访问其它对象。

【代理模式UML图】

【代理模式-JAVA代码实现】

新建一个买车的接口:

buy_car_package;

interface 

buy_car_package 

buy_car();

新建一个people人类,具有买车的行为,所以实现接口buy_car_package:

buy_car_imple;

people 

implements 

private 

int 

cash;

String 

username;

getCash() 

return 

setCash(int 

cash) 

getUsername() 

setUsername(String 

username) 

buy_car() 

"

买了一台新车"

people类不能拥有车,必须经过proxy代理类的认证,符合条件之后才可以拥有车辆,新建一个代理,这个代理类来考察当前的people是否有资格进行买车:

proxy_buy_car_imple 

people;

getPeople() 

setPeople(people 

people) 

if 

() 

>

3000) 

花"

()

块 买了新车 交易结束"

else 

金钱不够,请继续比赛!

最后创建一个客户端,用来模拟买车的行为:

run_main;

people_ref1 

people();

(4000);

高洪岩"

people_ref2 

(2000);

岩洪高"

proxy_buy_car_imple();

(people_ref1);

(people_ref2);

程序运行结果如下:

高洪岩花4000块 买了新车 交易结束

岩洪高金钱不够,请继续比赛!

这样people就不可能自由的拥有车辆,必须经过proxy的认证之后才可以。

而代理模式在GOF四人帮的介绍中大体有4种使用情景:

(1)远程代理。

典型的就是客户端与webservice使用的情况,客户端由于是针对OOP编程,而不是针对webservice中的方法进行编程,所以得在客户端模拟一下webservice的环境,用proxy来对webservice进行包装,这样就可以使用proxy代理类来远程操作webservice了。

(2)虚拟代理。

比如你要开发一个大文档查看软件,大文档中有大的图片,有可能一个图片有100MB,在打开文件时不可能将所有的图片都显示出来,这样就可以使用代理模式,当需要查看图片时,用proxy来进行大图片的打开。

(3)安全代理。

其实也就是本例中所举的买车的例子,金钱不够不可以买车!

(4)智能指引。

比如在访问一个对象时检测其是否被锁定等情况。

4【外观模式应用场景举例】

比如在玩“极品飞车”这款游戏,你只需要等待的就是倒计时到0时以最快的车速冲到第一名,但游戏者根本没有想过在车冲出去之前要做哪些工作,比如挂档,离合器,油箱检测,调整方向等等的微操作,将这些微操作封装起来变成一个接口就是外观模式了。

在WEB开发中的MVC分层架构就是典型的一个外观模式,每一层将操作的具体内容隐藏起来,保留一个接口供上层调用。

【外观模式解释】

为子系统中的一组接口提供一个一致的interface接口界面。

【外观模式UML图】

【外观模式-JAVA代码实现】

新建赛车类:

start() 

车子已启动"

check_stop() 

刹车检查"

check_box() 

检查油箱"

check_console() 

检查仪表盘是否异常"

新建赛车操作的外观类:

car_facade;

car_facade_imple 

car_go_go(car 

car_ref) 

新建客户端运行类:

car_facade_imple_ref 

car_facade_imple();

(new 

car());

检查油箱

检查仪表盘是否异常

刹车检查

车子已启动

很简单吧,将子操作用一个外观接口封装起来,然后调用这个接口就是调用那些非常复杂的微操作了。

5【抽象工厂模式应用场景举例】

  写到抽象工厂模式了,我深知“抽象工厂模式”博文会带来一点点高潮,因为程序员对工厂模式中的“抽象工厂”都是比较感冒的,而且关注也很多,我就尽量用我所能理解的那么点程度来给大家介绍这个模式,如果有更好的比喻还请网友指正,先感谢了!

  设计模式-快餐简解-【工厂方法模式】

介绍了工厂方法的使用,从那个程序中可以看到,奥迪audi车是从audi_car_factory_imple工厂中创建出来的,而大众3W车是从threeW_car_factory_imple工厂中创建出来的,那么如果这2家汽车生产大厂由总部在北京市,现在发展到上海,深圳等城市创建生气汽车的分厂,该怎么办是不是得将原来的奥迪汽车工厂类:

audi_car_factory_imple 

Icar_factory 

Icar_interface 

create_car() 

car_audi_imple 

car_audi_imple_ref 

car_audi_imple();

奥迪A6"

(300);

car_audi_imple_ref;

改成类似如下的模样:

create_car(String 

area_car) 

北京"

)){创建一个北京的奥迪汽车}

上海"

)){创建一个上海的奥迪汽车}

深圳"

)){创建一个深圳的奥迪汽车}

那么发现一个问题,不同地域的汽车却在一个工厂中出现,这是不合乎常理的,因为北京奥迪在北京分厂创建,上海奥迪在上海分厂创建,这样才对。

所以如果遇到分“大系”来创建对象的时候,抽象工厂方法是肯定要使用的时候了。

这里的大系指的就是从地域上来分。

这个例子就应该以“用抽象工厂来定义具体工厂的抽象,而由具体工厂来创建对象”

比如在玩“极品飞车”这款游戏,每个地图处都有造车的工厂,每个造车的工厂都因为有造车的档次不同而划分为高级车厂,低级车厂,那么这样的场景正是应用抽象工厂的好时机,再来理解一下这句话“用抽象工厂来定义具体工厂的抽象,而由具体工厂来创建对象”,用抽象造车工厂来定义具体造车工厂的抽象,而由具体的造车工厂来创建汽车,这就是抽象工厂与工厂方法的不同,工厂方法中对象的创建是由工厂方法来确定的,创建的对象都是不分类并且实现一个接口的,而抽象工厂就是在工厂方法的基础上对创建车的对象的行为进行分类,比如北京车厂,上海车厂等。

【抽象工厂模式解释】

创建模式

提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

【抽象工厂模式UML图】

【抽象工厂模式-JAVA代码实现】

新建抽象工厂接口:

car_factory_interface;

create_threeW_car();

create_audi_car();

新建抽象工厂接口的高级车adv工厂实现类:

car_factory_imple;

car_factory_adv 

create_audi_car() 

car_audi_imple_adv 

car_audi_imple_adv();

car_audi_imple_adv;

create_threeW_car() 

car_3w_imple_adv 

car_3w_imple_adv_ref 

car_3w_imple_adv();

大众A6"

car_3w_imple_adv_ref;

新建抽象工厂接口的普通车low工厂实现类:

car_factory_low 

car_audi_imple_low 

car_audi_imple_low_ref 

car_audi_imple_low();

car_audi_imple_low_ref;

car_3w_imple_low 

car_3w_imple_low_ref 

car_3w_imple_low();

car_3w_imple_low_ref;

上面已经有抽象工厂和具体工厂的实现类了。

新建汽车接口:

car_interface;

start();

stop();

新建汽车父类:

car_imple;

base_car_imple 

speed;

name;

getSpeed() 

setSpeed(int 

speed) 

getName() 

setName(String 

name) 

reate_threeW_car();

富华版:

大众A6 

车以专利技术起动了 最高速度为:

300

车以专利技术停车了

抓一篇阎宏的小文字:

一开始只在后花园中种蔬菜类的时候可以用简单工厂模式,由工厂负责生成具体的蔬菜类,

但是如果后花园要引进水果类的时候简单模式就行不通了,因此需要使用工厂方法模式,将产品类族分开。

但是如果后花园的规模继续扩大到地域范围的分割时,比如说一个在北京,一个在上海的时候,工厂方法模式就不够了,因为对两个后花园来说,每个后花园的植物是要被种在一起的,并且两个后花园用工厂方法模式是无法体现其区别的

从程序中可以看到,工厂是抽象的,工厂的实现是不样的,不同的工厂创建出不同汽车。

而工厂方法仅仅是用一个工厂去创建很多汽车。

6【观察者模式应用场景举例】

比如在玩“极品飞车”这款游戏,每一个车手到达终点的时候,都会在其它车手的屏幕上显示:

某某人以多少时间到达终点的提示,其实这就是一个典型的观察者模式的应用,观察者模式即是典型的双向一对多的应用场景下用一的一端来通知多的一端。

【观察者模式解释】

行为模式

定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。

这个主题对象的状态发生改变时,会通知所有的观察者对象,使它们能够自己更新自己。

【观察者模式UML图】

【观察者模式-JAVA代码实现】

新建抽象发布通知父类:

carer_subject;

carer_subject_parent 

set_state(String 

state_string);

get_state();

add_observer(carer_observer 

carer_observer_ref);

sub_observer(carer_observer 

notityAllCarer();

新建发布通知实现类:

carer_subject_sub 

List<

carer_observer>

list_observer 

ArrayList<

state;

state_string) 

state_string;

get_state() 

carer_observer_ref) 

(carer_observer_ref);

notityAllCarer() 

state 

到达终点"

for 

(int 

0;

<

i++) 

(i).show_info();

新建观察者接口:

carer_

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2