博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Facade模式[fəˈsɑːd]
阅读量:6945 次
发布时间:2019-06-27

本文共 1311 字,大约阅读时间需要 4 分钟。

hot3.png

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

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

 观察者模式的结构

   23083842_L7lZ.jpg

 

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

转载于:https://my.oschina.net/ydsakyclguozi/blog/405313

你可能感兴趣的文章
org.apache.felix.framework-5.6.12源码解析——org.apache.felix.framework文件夹最后的部分...
查看>>
Python3的tcp socket接收不定长数据包接收到的数据不全。
查看>>
b2b
查看>>
第三周Java学习总结
查看>>
OGRE的安装和编译【转+改】
查看>>
获取管理员组用户
查看>>
Mysql—(2)—
查看>>
简历的分布式
查看>>
[转]string和stringstream用法总结
查看>>
LeetCode:Rotate Array
查看>>
jquery pagination.js 分页
查看>>
DOM对象与jquery对象
查看>>
1.6(SQL学习笔记)存储过程
查看>>
XXS level8
查看>>
分布式日志收集系统:Facebook Scribe
查看>>
VxWorks下PCI驱动的配置与测试
查看>>
NSString 中包含中文字符时转换为NSURL
查看>>
Unity 协程停不了?
查看>>
多个文本框点击复制 zClip (ZeroClipboard)有关问题
查看>>
5款手机应用开发框架推荐
查看>>