看过 风雪涟漪兄写过一篇《外观模式(Facade Pattern) 追MM》的帖子, 一直很喜欢网上流行那篇 用追MM比喻设计模式的帖子, 只是一直没见过对应的代码实现, 看了风雪涟漪兄写的帖子很有创意, 但是觉得其中代码还是不够贴切, 在这里有写了一遍,欢迎大家都来投鸡蛋。
外观模式:
定义:它为子系统中的一组接口提供一个统一的高层接口。是的子系统更容易使用。
有一天女朋友想要去一个地方旅游。。旅游需要考虑很多很多的问题。如旅游的地点,航班,宾馆,饭店。这些事情做起来其实蛮复杂的,如果女朋友是一个怕麻烦的人, 那这些事情就应该我来做了。接下来我该怎么办呢? 下面我们先定义几个接口,再接着说。
interface Retaurant {
FoodPojo supplyFood();
}
interface Hotel{
RoomPojo supplyRoom();
}
interface AirlineCompany{
Flight book();
}
class FoodPojo {}
class RoomPojo {}
class Flight{}
以上接口的对象是mm旅游所必须要预定的三个商业单位,它是具体是什么mm不想知道(漂亮女孩都这样),这三个对象能给mm提供她需要的航班,酒店房间,美食。 可是三个接口对mm来说还是复杂, 只要给她一个旅游计划就好了。
class TravelPlan{
Retaurant retaurant;
Hotel hotal;
AirlineCompany airlineCompany;
public Retaurant getRetaurant() {
return retaurant;
}
public Hotel getHotal() {
return hotal;
}
public AirlineCompany getAirlineCompany() {
return airlineCompany;
}
}
看来mm只需要得到一个旅游计划就能搞定一切了, 不过这个旅游计划从哪里来呢, 当然要去旅游公司找了
interface TravelCorporation{
TravelPlan buildPlan();
}
这时mm发话了,旅游公司我来挑, 我要中青旅! 领导发话照办~ 于是我有了新的方法...............
class BoyFriend{
public TravelPlan I_want_to_travel(String TravelCorporationName){
//mm是领导,领导说找那家旅游公司就找那家旅游公司。
TravelCorporation tc=find();
//但是mm只要结果,给她一份旅游计划,相当与和旅游公司的合同。
return tc.buildPlan();
}
private TravelCorporation find(){return //工程模式得到;}
}
到这里,mm开始去旅游啦。
class GirlFriend{
BoyFriend bf;
void travel(){
TravelPlan tp=bf.I_want_to_travel("中青旅");
//mm需要飞去玩的地方
AirlineCompany air=tp.getAirlineCompany();
Flight f=air.book();
//到达目的地了,mm找到旅馆
Hotel hotel=tp.getHotal();
//到了旅馆拿房间钥匙吧
RoomPojo room=hotel.supplyRoom();
//mm玩累了,要吃饭了,饭店伺候
Retaurant retaurant=tp.getRetaurant();
//mm点菜,要吃的了
FoodPojo food=retaurant.supplyFood();
}
}
有吃有玩有住,mm很满意, 不用操心,只是对男朋友说了句话得到一个旅游合同就搞定一下了,mm好喜欢会Facade模式的gg。
于是mm也改了自己的类,表达了对gg的感情。
class GirlFriend(){
private BoyFriend bf
GirlFriend(){
bf=new MyLover();
}
}
o(∩_∩)o...
分享到:
相关推荐
设计模式1,FACADE模式,Adapter facade Adapter singleton proxy
设计模式之门面模式(Facade模式),介绍门面模式,实际例子分析,代码讲解等
设计模式之外观模式 facade 采用JAVA实现,请结合文档看,欢迎讨论。。
facade设计模式 里面有设计模式的实现
eclipse工程文件 包含代码 有助理解 门面(Facade)模式 <br>外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。 <br>医院的例子 <br>用一个例子进行说明,如果把医院...
设计模式中的facade外观模式在JavaScript开发中的运用_.docx
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要资源分。敬请期待。 这是第11节:结构型...
章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立...10、设计模式之State 11、设计模式之Facade(外观) 12、设计模式之Interpreter(解释器) 13、设计模式之Visitor
设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template ...
设计模式C++学习之门面模式(Facade)
C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) (Level 300)
C++设计模式课件14_Facade_门面模式.pdf
设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template ...
设计模式面面观(13):外观模式(Facade Pattern)-结构型模式 http://blog.csdn.net/fanweiwei/archive/2008/04/17/2299641.aspx
23种设计模式之十一(结构型模式)Facade模式
然后,集中介绍了很多流行的设计模式在JavaScript中的应用,包括Module(模块)模式、Observer(观察者)模式、Facade(外观)模式和Mediator(中介者)模式;最后,还探讨了模块化的JavaScript模式、jQuery及其插件...
java 设计模式 Facade外观模式 Simple Factory 简单工厂模式,代码有点罗嗦,不过可移植性很强
Facade设计模式在VB数据库中的应用