当前位置: 首页 > news >正文

外观模式

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

作者: God bless you 发表于 2010-06-08 07:44 原文链接 阅读: 1215 评论: 2

外观模式

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

 

要点:

1. 外观模式为复杂子系统提供了一个简单接口,并不为子系统添加新的功能和行为。

2. 外观模式实现了子系统与客户之间的松耦合关系。

3. 外观模式没有封装子系统的类,只是提供了简单的接口。如果应用需要,它并不限制客户使用子系统类。因此可以在系统易用性与通用性之间选择。

4. 外观模式注重的是简化接口,它更多的时候是从架构的层次去看整个系统,而并非单个类的层次。

5. 外观模式经常使用单例实现,但子系统们可以有多个Façade。

 

设计原则:

最少知识原则:只和你的密友谈话

 

实现:

clip_image002

Façade:Client调用Façade的方法。Façade知晓子系统的功能和职责,它将Client的请求委派到子系统去。

SubSystem:

1. 实现子系统的功能。

2. 子系统可以由Façade调用,也可以由Client直接调用。

3. 子系统不知道Façade的存在,对于子系统,Façade只是一个Client。

 

协作:

1. 客户程序通过发送请求给Façade的方式与子系统通讯,Façade将这些消息转发给适当的子系统对象。

2. 使用Façade的客户程序不需要直接访问子系统对象。

 

适用性:

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

2. 减少子系统之间以及子系统与客户端的依赖性,提高子系统的独立性和可移植性。

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

评论: 2 查看评论 发表评论

程序员找工作,就在博客园

最新新闻:
· 中国联通押宝iPhone 与苹果合作仍在博弈(2010-09-21 16:23)
· 小心!10大沟通误区可能让CIO落马(2010-09-21 16:17)
· Zune 软件与服务国际化细节公开(2010-09-21 16:07)
· 雨林木风巨资兴建研发中心大楼(2010-09-21 16:06)
· 时隔四个月,Google 拼音 2.3.14.85 新版发布(2010-09-21 16:04)

编辑推荐:详解ASP.NET的最新安全漏洞

网站导航:博客园首页  个人主页  新闻  闪存  小组  博问  社区  知识库

转载于:https://my.oschina.net/godblessyou/blog/8113

相关文章:

  • MAC 通过brew安装软件
  • java中IO详细解释
  • jquery同步调用ajax
  • 分数拆分
  • XenDesktop学习笔记3之架构
  • jbpm 流程设计(BPMN2 Modeler)
  • aar
  • 这样记单词最有效
  • hdu 5348 MZL#39;s endless loop
  • 对不起,我不再愛你了
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • HP SiteScope 11
  • 【版本更新】Excel控件Spire.XLS for .NET V7.12发布 | 修复多个重大bug
  • matlab集合操作
  • C++学习笔记4
  • php的引用
  • 【附node操作实例】redis简明入门系列—字符串类型
  • chrome扩展demo1-小时钟
  • GitUp, 你不可错过的秀外慧中的git工具
  • JavaScript 基础知识 - 入门篇(一)
  • JS+CSS实现数字滚动
  • JS实现简单的MVC模式开发小游戏
  • MySQL的数据类型
  • react 代码优化(一) ——事件处理
  • SAP云平台里Global Account和Sub Account的关系
  • vue自定义指令实现v-tap插件
  • yii2中session跨域名的问题
  • 初识 beanstalkd
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 关于使用markdown的方法(引自CSDN教程)
  • 软件开发学习的5大技巧,你知道吗?
  • 三栏布局总结
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 在Docker Swarm上部署Apache Storm:第1部分
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #AngularJS#$sce.trustAsResourceUrl
  • #define 用法
  • (007)XHTML文档之标题——h1~h6
  • (14)Hive调优——合并小文件
  • (7)STL算法之交换赋值
  • (Git) gitignore基础使用
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (三)模仿学习-Action数据的模仿
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)创业家杂志:UCWEB天使第一步
  • (转)详解PHP处理密码的几种方式
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ./和../以及/和~之间的区别
  • .NET gRPC 和RESTful简单对比
  • .net mvc 获取url中controller和action
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .Net 应用中使用dot trace进行性能诊断