文档章节

Facade模式

mac_zhao
 mac_zhao
发布于 2015/02/25 11:17
字数 567
阅读 15
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

Facade模式要求一个子系统的外部与其内部的通信必须通过一个统一的Facade对象进行。Facade模式提供一个高层次的接口,使得子系统更易于使用。  

 

  就如同医院的接待员一样,Facade模式的Facade类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与Facade对象打交道,而不需要与子系统内部的很多对象打交道。   

 


观察者模式的结构

 

  

 

 

 Facade的几个要点

  从客户程序的角度来看,Facade模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果——内部子系统的任何变化不会影响到Façade接口的变化。  

 

   Façade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。Façade很多时候更是一种架构设计模式。 


 

   Façade设计模式并非一个集装箱,可以任意地放进任何多个对象。Façade模式中组件的内部应该是“相互耦合关系比较大的一系列组件”,而不是一个简单的功能集合。  


 

   注意区分Façade模式、Adapter模式、Bridge模式与Decorator模式。Façade模式注重简化接口,Adapter模式注重转换接口,Bridge模式注重分离接口(抽象)与其实现,Decorator模式注重稳定接口的前提下为对象扩展功能。


 



 

适用性

 

  1.为一个复杂子系统提供一个简单接口。

 

  2.提高子系统的独立性。

 

  3.在层次化结构中,可以使用Facade模式定义系统中每一层的入口。

 

 

 

Facade模式的模型

  A系统有A1, A2, A3等类。客户端需要调用A系统的的A1.doSomething1();A2.doSomething2();A3.doSomething3()来完成某功能。
Facade模式的实现模型就是:

 

A系统:

 

class A1 {
    public void doSomething1();
}

 

class A2 {
    public void doSomething2();
}

 

class A3 {
    public void doSomething3();
}

 

Facade:
public class Facade {
    public void doSomething() {
        A1 a1 = new A1();
        A1 a2 = new A2();
        A1 a3 = new A3();

 

        a1.doSomething1();
        a2.doSomething2();
        a3.doSomething3();
    }
}

 


Test:
public class Client {
    public static void main(String []args) {
        Facade facade = new Facade();
        facade.doSomething();
    }
}

© 著作权归作者所有

上一篇: 控制反转
下一篇: 服务器虚拟化
mac_zhao
粉丝 41
博文 249
码字总数 304671
作品 0
普陀
程序员
私信 提问
加载中

评论(0)

Facade模式[fəˈsɑːd]

Facade模式要求一个子系统的外部与其内部的通信必须通过一个统一的Facade对象进行。Facade模式提供一个高层次的接口,使得子系统更易于使用。   就如同医院的接待员一样,Facade模式的Fac...

凯文加内特
2015/04/23
111
0
结构型模式:Facade 外观模式

结构型模式:Facade 外观模式 1、系统的复杂度 1)假设我们需要开发一个坦克模拟系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎、控制器、车轮、车身等各子系统构成。 //...

flyhighly
2011/04/24
62
0
GoF之外观模式(Facade)

外观模式的定义   外观模式在GOF中的解释:为子系统定义一组统一的接口,这个高级的接口会让子系统更容易被使用   BattleScene类调用GameSystemFacade的方法,与直接在BattleScene类中写...

osc_i2b7a3j0
2018/01/08
1
0
java的设计模式 - 外观模式(Facade)

目的 看脸模式目的很简单,就是给用户留个好印象,不想让用户关注系统中的具体细节,关注系统的外表(暴露出来的接口)就好了。一些 GUI 的菜单也好,SDK 也好或多或少也会用到这种思想。这更...

osc_tg4e471h
2019/04/01
2
0
设计模式之Facade,Adapter, Proxy

Facade,Adapter,Proxy模式有点类似,功能上都是对调用者提供调用接口,但他们的目的就有些不同。最近正在做一个域名系统,其中就用到了Facade和Adapter模式。正好结合项目来分析下这几种设...

caoxinyu0205
2016/09/03
88
0

没有更多内容

加载失败,请刷新页面

加载更多

文献速递20200524

一 文献题目:Characterizing the Causal Pathway for Genetic Variants Associated with Neurological Phenotypes Using Human Brain-Derived Proteome Data 不想看英文题目:使用人脑蛋白质......

osc_mbhfa1vl
40分钟前
9
0
【Java入门】JDK安装和环境变量配置(Win7版)

系统环境:Windows7 x64 安装JDK和JRE版本:1.8.0_191 1、下载JDK安装包 Oracle官网下载网址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 选择需要下载的JDK版本...

osc_s7aj86hu
41分钟前
11
0
Android Q 指纹解锁流程

Android Q 指纹解锁流程 // Authentation Finger Schedule: (close Screen, Authentation with finger(Success))        // PhoneWindowManager        mKeyguardDelegate.onStar......

osc_0qnrwmy3
43分钟前
12
0
List的扩容机制,你真的明白吗?

一:背景 1. 讲故事 在前一篇大内存排查中,我们看到了Dictionary正在做扩容操作,当时这个字典的count=251w,你把字典玩的66飞起,其实都是底层为你负重前行,比如其中的扩容机制,当你遇到...

osc_34b9n45c
44分钟前
14
0
2020.04.12软件更新公告

原创软件区升级ComicsViewer、DjVuToy、Pdg2Pic、PdgRenamer、PdgThumbViewer

osc_6tgtqi6v
45分钟前
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部