文档章节

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

凯文加内特
 凯文加内特
发布于 2015/04/23 08:38
字数 565
阅读 104
收藏 3

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();
    }
}


本文转载自:http://www.cnblogs.com/wzh206/archive/2010/03/21/1691112.html

凯文加内特
粉丝 341
博文 701
码字总数 110786
作品 0
青岛
后端工程师
私信 提问
IT 圈里有哪些经常被读错的词?

()标相应英文单词 []标音标 =====公司/产品名===== Youtube (You-tube [tju:b]) 念 优tiu啵 不念 优吐毙 Skype [ˈskaɪp] 念 死盖破 不念 死盖屁 Adobe [əˈdəʊbi] 念 阿兜笔 不念 阿斗伯...

鉴客
2011/09/16
1K
21
多少牛逼的程序员毁在low逼的英文发音上(JAVA)

最最常用的关键词及音标 数据类型:boolean、byte、short、int、long、double、char、float、double。 包引入和包声明:import、package。 用于类和接口的声明:class、extends、implements、...

linzechi
2017/11/16
0
0
写作 C# 读作 C 井,这些程序员常用词汇你读对了吗?

适逢北京大学创办 120 周年,庆典上,现任北大校长将讲稿中的鸿鹄hu(2声)读成了鸿hao(4声),念错字并不稀有,然而这次事件的主角和场合有些特殊,再凭借着互联网的火速传播速度和发酵,这...

王练
2018/05/08
4.6K
70
day168-2018-12-05-英语流利阅读-待学习

度假的时候不许玩手机,你能做到吗? Lala 2018-12-05 1.今日导读 随着社交媒体的兴起,人们已经越来越离不开这些社交平台和智能手机了。现在,即使是在休假中,人们还是不自觉地会回复邮件,...

飞鱼说编程
2018/12/05
131
3
day165-2018-12-02-英语流利阅读-待学习

2018 年“有毒”?《牛津词典》年度词出炉! Lala 2018-12-02 1.今日导读 2018 年对你来说,是怎样的一年?快乐?平淡?充实?悲伤?或许很难找到一个精准的词来形容,但可以确定的是,你应该...

飞鱼说编程
2018/12/02
88
1

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部