目录

文章目录

  • 目录
  • 外观模式(Facade)
  • 应用场景
  • 代码示例

外观模式(Facade)

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

外观模式与适配器模式的区别在于:外观模式是为大系统下的小系统设计统一的接口,而适配器模式是针对不同系统各种接口调用而设计。

优点

  1. 实现了子系统与 Client 之间的松耦合关系。
  2. Client 屏蔽了子系统组件,减少了 Client 所需处理的对象数目,并使得子系统使用起来更加容易。

应用场景

  • 设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
  • 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
  • 维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。

代码示例

class API1:def Save(self):print('保存数据A')def Del(self):print('删除数据A')class API2:def Save(self):print('保存数据B')def Del(self):print('删除数据B')class Facade:def __init__(self):self._api1 = API1()self._api2 = API2()def SaveAll(self):[obj.Save() for obj in [self._api1, self._api2]]def DelAll(self):[obj.Save() for obj in [self._api1, self._api2]]if __name__ == '__main__':test = Facade()test.SaveAll()test.DelAll()

设计模式 — 结构型模式 — 外观模式相关推荐

  1. Java设计模式之结构型:外观模式

    一.什么是外观模式: 外观模式通过对客户端提供一个统一的接口,用于访问子系统中的一群接口.使用外观模式有以下几点好处: (1)更加易用:使得子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要 ...

  2. 设计模式(结构型)之代理模式(Proxy Pattern)

    PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...

  3. 设计模式 - 结构型 - 装饰者模式

    2019独角兽企业重金招聘Python工程师标准>>> 介绍 意图:动态地给一个对象添加一些额外的职责.就增加功能来说,装饰器模式相比继承更为灵活. 主要解决:一般的,我们为了扩展一 ...

  4. [设计模式-结构型]享元模式(Flyweight )

    概括 名称 Flyweight 结构 动机 运用共享技术有效地支持大量细粒度的对象. 适用性 一个应用程序使用了大量的对象. 完全由于使用大量的对象,造成很大的存储开销. 对象的大多数状态都可变为外部 ...

  5. 【设计模式·结构型】桥接模式Bridge Pattern

    目的 该模式用于分离抽象与实现,并且抽象与实现可以独立变化 应用场景 (1)希望抽象和实现之间没有固定的绑定关系,不同抽象接口和实现可以组合和扩充,程序运行时动态选择.切换具体实现 (2)类层次结构, ...

  6. 设计模式(结构型)之享元模式(Flyweight Pattern)

    PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...

  7. Java设计模式之结构型:组合模式

    前言: 我们对于上面两幅图片肯定非常熟悉,这两幅图片我们都可以看做是一个文件结构,对于这样的结构我们称之为树形结构.在数据结构中我们知道可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可 ...

  8. Java设计模式之结构型:代理模式

    前言: 我们一般在租房子时会去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做:再比如我们打官司需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们 ...

  9. Java设计模式之结构型:桥接模式

    一.什么是桥接模式: 桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯,桥接模式的作用就是为被分离的抽象部分和实现部分搭桥.在现实生活中一个物品在搭配不同的配件时会产生不同的动作和结果, ...

  10. 《设计模式详解》结构型模式 - 外观模式

    外观模式 5.5 外观模式 5.5.1 概述 5.5.2 结构 5.5.3 案例 5.5.4 使用场景 5.5.5 Tomcat 源码 完整的笔记目录:<设计模式详解>笔记目录,欢迎指点! ...

最新文章

  1. 横空出世,席卷Csdn [评微软等公司数据结构+算法面试100题]
  2. 信息系统项目管理师优秀论文:项目进度管理
  3. 链接脚本使用----- 将二进制文件作为一个段
  4. 世界五星级大厨经典菜品集
  5. 深入浅出React Native 1: 环境配置
  6. springboot+mybatis+mysql+dubbo整合使用
  7. 您不知道Bash:Bash阵列简介
  8. python零基础知识_python 零基础 基本知识
  9. 如何在矩池云上运行FinRL-Libray股票交易策略框架
  10. 学了python能干啥举例-Python主要用来做什么?
  11. qq里面cap字符_QQ 幸运字符一共有几种?
  12. node koa2 玩起来都是中间件啊
  13. matlab怎样设置中文界面
  14. java计算机毕业设计BS用户小票系统MyBatis+系统+LW文档+源码+调试部署
  15. SReng日志扫描动画教程
  16. 地址总线/数据总线/控制总线的作用
  17. Web项目控制台无法打印中文,输出中文乱码,request设置了UTF-8
  18. 【Python】基金/股票 最大回撤率计算与绘图详解(附源码和数据)
  19. windows7安装UG1899报数字签名错误的解决方案
  20. Linux编写内核模块,实现在/proc目录下添加文件

热门文章

  1. XamarinSQLite教程在Xamarin.Android项目中提取数据库文件
  2. mock模拟的数据能增删改查吗_Mock.js模拟数据,脱离后端独立开发,实现增删改查功能...
  3. db2设置默认schema_DB2中设置当前会话的Schema
  4. 苹果的新Siri:不男,也不女
  5. 量子信息之父辞世,开山论文写完14年才被发表,晚年去当建筑工人
  6. “请给我一个五彩斑斓的黑”,只需一行命令就能让AI画画,OpenAI的Dall-E被大神复现...
  7. GPT“高仿”系列开源了!最大可达GPT-3大小,还能自主训练
  8. 如何提高PyTorch“炼丹”速度?这位小哥总结了17种方法,可直接上手更改的那种...
  9. 谷歌新模型突破BERT局限:NLP版「芝麻街」新成员Big Bird长这样
  10. 今日可抢回程火车票,实测两款GitHub开源抢票插件,所有坑我们都帮你踩过了...