设计模式读书笔记之外观模式/门面模式(Facade)
2010-03-22 22:06
302 查看
门面模式:为多个子系统提供统一的高层接口,以降低客户对子系统的依赖, 减少客户使用子系统的难度.
![](http://images.cnblogs.com/cnblogs_com/sunxing007/237352/r_facade.jpg)
门面模式是一个名字和描述都让人感觉很难的模式,我也曾经被它的名字吓倒过。其实门面模式很简单, 就是要把下面的左图结构变为右图结构。
![](http://hi.csdn.net/attachment/201004/17/0_1271513344VAN6.gif)
![](http://hi.csdn.net/attachment/201004/17/0_1271513356ggKa.gif)
基础代码:
举一例: 汽车分好多子系统: 发动机, 刹车系统, 变速系统, 电子系统..... 如果司机在开车的时候要直接和这些子系统打交道, 那这个车没办法开了,因为这个难度太大. 于是于是有了驾驶室这个操作平台, 由驾驶室里面的油门, 刹车, 换档把手, 手札, 开关按钮来和这些子系统打交道. 而客户(即驾驶员)只需要坐在驾驶室里就可以操控整个车. 这个驾驶室就是这整个汽车全部系统的门面.
特点:
1 外观类持有各个子系统的引用;
2 外观类通过调用各个子系统的功能来为用户提供高层接口.
适应场景: 子系统比较多而且复杂
![](http://images.cnblogs.com/cnblogs_com/sunxing007/237352/r_facade.jpg)
门面模式是一个名字和描述都让人感觉很难的模式,我也曾经被它的名字吓倒过。其实门面模式很简单, 就是要把下面的左图结构变为右图结构。
![](http://hi.csdn.net/attachment/201004/17/0_1271513344VAN6.gif)
![](http://hi.csdn.net/attachment/201004/17/0_1271513356ggKa.gif)
基础代码:
//子系统1 package designpattern.facade; public class SubSystem1 { public void method1(){ // } public void method2(){ // } public void method3(){ // } } //子系统2 package designpattern.facade; public class SubSystem2 { public void method1(){ // } public void method2(){ // } public void method3(){ // } } //子系统3 package designpattern.facade; public class SubSystem3 { public void method1(){ // } public void method2(){ // } public void method3(){ // } } //门面 package designpattern.facade; public class Facade { private SubSystem1 sub1; private SubSystem2 sub2; private SubSystem3 sub3; public Facade(SubSystem1 sub1, SubSystem2 sub2, SubSystem3 sub3){ this.sub1 = sub1; this.sub2 = sub2; this.sub3 = sub3; } public void doThis(){ sub1.method1(); sub2.method1(); sub3.method1(); } public void doThat(){ sub2.method2(); sub3.method3(); //...... } } //客户/上下文 package designpattern.facade; public class Client { private Facade facade; public Client(Facade f){ this.facade = f; } public void doSomething(){ facade.doThat(); //facade.doThis(); //..... } }
举一例: 汽车分好多子系统: 发动机, 刹车系统, 变速系统, 电子系统..... 如果司机在开车的时候要直接和这些子系统打交道, 那这个车没办法开了,因为这个难度太大. 于是于是有了驾驶室这个操作平台, 由驾驶室里面的油门, 刹车, 换档把手, 手札, 开关按钮来和这些子系统打交道. 而客户(即驾驶员)只需要坐在驾驶室里就可以操控整个车. 这个驾驶室就是这整个汽车全部系统的门面.
特点:
1 外观类持有各个子系统的引用;
2 外观类通过调用各个子系统的功能来为用户提供高层接口.
适应场景: 子系统比较多而且复杂
相关文章推荐
- 设计模式读书笔记之外观模式/门面模式(Facade)
- 门面模式(Facade)(外观模式)—向养牛场送货
- 设计模式(七)门面模式(Facade Pattern 外观模式)
- 门面模式(外观模式):Facade
- 门面模式(Facade 外观模式,对象结构型模式)
- 外观/门面模式(Facade)
- 设计模式之门面(外观)模式(Facade)
- Java设计模式——门面(外观)模式(Facade Pattern)
- Java设计模式——外观模式(门面模式)(Facade)
- 门面(Facade外观)模式
- 我看懂的设计模式 Facade,外观模式/门面模式
- 外观模式(门面模式)--Facade
- 外观模式(Facade Pattern)或门面模式
- 门面模式(Facade 外观模式,对象结构型模式)
- 门面模式(Facade Pattern 外观模式)
- 设计模式之 外观(门面)模式 Facade
- 外观/门面模式(Facade)
- Facade(外观模式,门面模式)
- 软件设计模式系列之四 门面模式(也叫外观模式,Facade) .
- 设计模式初探-外观模式(FACADE)也叫门面模式