外观模式(Facade)
来源:互联网 发布:淘宝自动发货机器人 编辑:程序博客网 时间:2024/06/06 04:50
前提
先要假设一个情景,当然不一定准确。一个地主想吃一个菜,他首先要叫佣人去买菜,然后叫保姆洗菜,最后叫厨师做菜。这样他才能吃到菜。
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 Pattern)
- 外观(Facade)模式
- 外观模式(Facade Pattern)
- Facade(外观)模式
- Facade外观模式
- facade(外观模式)
- Facade 外观模式
- 外观模式(Facade)
- Facade外观模式
- Facade外观模式
- 外观模式Facade
- 外观模式(Facade)
- Facade(外观)模式
- Facade外观模式
- 外观模式(Facade)
- 外观模式(Facade)
- 风雨十年:一个老程序员的心里话(上)
- jqGrid表格插件——参数配置
- 使用SqlDependency监听MSSQL数据库表变化通知
- Direct2D入门
- java发送udp广播包
- 外观模式(Facade)
- C++面试宝典
- The iPad Split
- 简单排序
- 傻嘎,IOC原来是这样子的
- java多进程
- 纪念公司关张一周年 IT的老兵:我们缺什么二(2013.6)
- Introducing Direct2D
- 接口实例_模拟简单的播放器解码插件扩展