博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FACADE
阅读量:6541 次
发布时间:2019-06-24

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

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

2 动机,便于不需要更多功能的人通过Facade 简化使用

3 适用性:

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

   . 客户程序与抽象类的实现部分之间存在着很大的依赖性。Facade提高子系统的独立性

   . 当你需要构建一个层次结构的子系统时,可以仅通过facade通讯,简化之间的依赖性

4 参与者:

  . Facade:知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象

  . Subsystem classes:实现子系统的功能。处理由Facade对象指派的任务。没有Facade的任何信息,没有指向Facade的指针

5 协作:

   . 客户通过发送请求给Facade的方式与子系统通讯。

   . 使用Facade的客户不需要直接使用子系统

6 效果:

   . 对客户屏蔽子系统组件

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

   . 如果必要,客户可以直接使用子系统

7 实现:

  1)降低客户-子系统间的耦合度:用抽象类实现Facade而它的具体子类对应于不同的子类系统实现,降低客户与子系统的耦合度

  2)公共子系统与私有子系统

       子系统的公共接口包含所有的客户程序可以访问的类;私有接口仅用于对子系统进行扩充。

8 相关模式:

   . Abstract Factory 与Facade一起使用以提供一个接口,这一接口可用来以一种子系统独立的方式创建子系统对象。

   . Meidiator与Facade有点像,抽象了一些已有的功能。Mediator是使得同事间的任何通讯进行抽象,通常集中不属于任何单个对象的功能。

     Mediator的同事知道中介者并与它通信,而不是直接与其他同事通信。Facade仅对子系统对象的接口抽象,更易于使用,不定义新功能,子系统也不知道Facade的存在

   . 只需要一个Facade时,使用singleton

转载于:https://www.cnblogs.com/criticalsection/p/5717708.html

你可能感兴趣的文章
python之继承、抽象类、派生、多态、组合、封装
查看>>
SQL Server 数据类型陷阱
查看>>
mysql sql_mode 之 NO_ENGINE_SUBSTITUTION
查看>>
HDCMS留言插件的使用!
查看>>
多个项目MyEclipse中启动OutOfMemoryError: PermGen space
查看>>
git fetch & pull详解
查看>>
优酷2013.3去广告 不黑屏
查看>>
web入门、tomcat、servlet、jsp
查看>>
boost_1.63.0编译VS2013
查看>>
sqlserver还原数据库失败,sql2008备份集中的数据库备份与现有的xxx数据库不同
查看>>
mysql导入导出sql文件
查看>>
mysql查看每个数据库所占磁盘大小
查看>>
Github上的热门iOS开源项目:AFNetworking、MagicalRecord、BlocksKit以及XVim
查看>>
Android深度探索第三章
查看>>
jQuery 插件-(初体验一)
查看>>
PHP语言 -- Ajax 登录处理
查看>>
关于 js 一些基本的东西
查看>>
基于js的CC攻击实现与防御
查看>>
Largest Rectangle in a Histogram
查看>>
树状数组模板
查看>>