外观模式(Facade)
2013-06-07 23:26
405 查看
前提
先要假设一个情景,当然不一定准确。一个地主想吃一个菜,他首先要叫佣人去买菜,然后叫保姆洗菜,最后叫厨师做菜。这样他才能吃到菜。package demo.facade; /** * 佣人 * @author Martin * create by 2013-6-7 * update by 2013-6-7 */ public class Servant { public void bugVegetables() { System.out.println("蔬菜买好了。。"); } }
package demo.facade; /** * 保姆 * @author Martin * create by 2013-6-7 * update by 2013-6-7 */ public class Nanny { public void washVegetables() { System.out.println("蔬菜洗好了。。"); } }
package demo.facade; /** * 厨师 * @author Martin * create by 2013-6-7 * update by 2013-6-7 */ public class Cook { public void cookVegetables() { System.out.println("蔬菜烧好了。。"); } }
最后就是地主要分别叫他们干事了。
package demo.facade; /** * 地主 * @author Martin * create by 2013-6-7 * update by 2013-6-7 */ public class Landload { public static void main(String[] args) { Servant servant = new Servant(); System.out.print("佣人说:"); servant.bugVegetables(); Nanny nanny = new Nanny(); System.out.print("保姆说:"); nanny.washVegetables(); Cook cook = new Cook(); System.out.print("厨师说:"); cook.cookVegetables(); System.out.println("地主吃到菜了。。"); } }
输出结果
佣人说:蔬菜买好了。。保姆说:蔬菜洗好了。。
厨师说:蔬菜烧好了。。
地主吃到菜了。。
问题
一段时间后,地主觉得不太对劲。他要吃一个菜,需要监督的人太多了。他就想,如果我想吃一个菜,然后就有一个人把我想吃的菜送来就好了。于是地主就顾了一个管家。然后地主跟管家说,做一个菜给我吃。package demo.facade; /** * 地主 * @author Martin * create by 2013-6-7 * update by 2013-6-7 */ public class Landload { public static void main(String[] args) { Steward steward = new Steward();//管家 steward.createFood(); System.out.println("地主吃到菜了。。"); } }
package demo.facade;
/**
* 管家
* @author Martin
* create by 2013-6-7
* update by 2013-6-7
*/
public class Steward {
public void createFood() {
Servant servant = new Servant();
System.out.print("佣人说:");
servant.bugVegetables();
Nanny nanny = new Nanny();
System.out.print("保姆说:");
nanny.washVegetables();
Cook cook = new Cook();
System.out.print("厨师说:");
cook.cookVegetables();
}
}
哈哈,地方很高兴。因为他只要告诉管家,他想吃菜就有菜吃了。至于管家怎么监督工人和工人劳动的顺序,地主不用管。 在这里,管家就是一个外观模式。
好处
1、减少系统交互地主本来需要很佣人、保姆、厨师交互,但现在只需要和管家交互就可以了。
2、不需要知道模块的顺寻
地主本来需要知道先要佣人买菜,保姆洗菜,厨师做菜。但现在只需要和管家说一下,至于是先洗菜还是先买菜,地主根本不需要知道。
类图
相关文章推荐
- 外观模式(Facade)
- 设计模式:Facade(外观)模式
- 软件设计模式系列之四 门面模式(也叫外观模式,Facade) .
- 外观模式(Facade Pattern)
- 外观模式(Facade Pattern)
- 设计模式学习笔记---外观模式Facade pattern(Java版)
- 外观模式(Facade)
- 结构型模式:Facade(外观)
- 一天学习两个设计模式之Facade模式(外观模式,结构型模式)
- Android设计模式源码解析之外观模式(Facade)
- 外观模式(Facade Pattern)
- 设计模式 - 外观模式(Facade)
- 设计模式之外观模式(Facade)
- 设计模式:外观模式-facade
- Java设计模式(五)Facade(外观),Composite(组合),Decorator(油漆工)
- 13.外观模式--Facade
- 设计模式之外观模式(Facade)
- 外观模式(Facade)
- C++设计模式编程中Facade外观模式的使用实例解析
- 乐在其中设计模式(C#) - 外观模式(Facade Pattern)