[设计模式笔记]二. 结构型模式--11.Facade模式(外观模式)(一)

结构型模式--FACADE模式(外观)


一. 意图


为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口这个接口使得这一子系统更加容易使用.


二. 适用性


1. 当你要为一个复杂子系统提供一个简单接口时

Facade可以提供一个简单的缺省视图这一视图对大多数用户来说已经足够而那些需要更多的可定制性的用户可以越过facade.

2. 客户程序与抽象类的实现部分之间存在着很大的依赖性引入facade将这个子系统与客户以及其他的子系统分离可以提高子系统的独立性和可移植性.

3. 当你需要构建一个层次结构的子系统时使用facade模式定义子系统中每层的入口点如果子系统之间是相互依赖的你可以让它们仅通过facade进行通讯从而简化了它们之间的依赖关系.


三. 模式结构


图1


四. 角色说明


Facade

—知道哪些子系统类负责处理请求。

—将客户的请求代理给适当的子系统对象。

Subsystem classes

—实现子系统的功能。

—处理由Facade对象指派的任务。

—没有Facade的任何相关信息:即没有指向Facade的指针。


五. 说明


1. 它对客户屏蔽子系统组件

2. 它实现了子系统与客户之间的松耦合关系.

3. 客户也可以直接使用子系统.


我的理解


1. 子系统组件的复杂调用由Facade来负责, Facade提供一个统一的简单的接口给客户使用, Facade接口在调用子系统接口.

2. 就是在客户与子系统之间增加了一层增加的这一层简化了客户的调用客户与子系统也松耦合了.

例如GDI+ C++用户就提供了一层Facade. GDI+中的的Facade层提供了适合C++调用的接口隐藏了GDI+的直接调用.


相关模式


1. Abstract Factory 模式可以与Facade模式一起使用以提供一个接口这一接口可用来以一种子系统独立的方式创建子系统对象. Abstract Factory也可以代替Facade模式隐藏那些与平台相关的类.

2. Mediator模式与Facade模式的相似之处是它抽象了一些已有的类的功能然而, Mediator的目的是对同事之间的任意通讯进行抽象通常集中不属于任何单个对象的功能. Mediator的同事对象知道中介者并与它通信而不是直接与其他同类对象通信相对而言, Facade模式仅对子系统对象的接口进行抽象从而使它们更容易使用它并不定义新功能子系统也不知道Facade的存在通常来讲仅需要一个Facade对象因此Facade对象通常属于Singleton模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值