1、     Facade模式简介

Façade在建筑领域的意思是:(掩饰真相的)门面,也就意味着,如果你想探究更细节的真相就需要经过Façade。

《设计模式》一书中对Façade模式的意图是这样叙述的:

为子系统中的一组接口提供一个统一接口。(提供一个门面,掩饰真相。)Façade模式定义了一个更高层次的接口,使子系统更加容易使用。

2、     Facade模式关键特征

意图

希望简化原有系统的使用方式。需要定义自己的接口

问题

只需要使用某个复杂子系统的子集,或者,需要以一种特殊的方式与子系统交互

解决方案

Façade为原有系统的客户提供了一个新的接口

参与者(接口)与协作者(子系统)

为客户提供简化接口,使子系统更容易使用

效果

Façade模式简化了对所需子系统的使用过程。但是,由于Façade并不完整,因此客户可能无法使用某些功能。

实现

1、定义一个(或多个)具有所需接口的新类

2、让新的类使用原有的子系统

3、     Façade模式的应用

1)  不需要使用一个复杂子系统的所有功能,而且可以创建一个新的类,包含访问系统的所有规则。如果只需要使用系统的部分功能(这是通常的情况),那么你为新类所创建的API将比原系统的API简单得多。

2)  希望封装或者隐藏原系统。

3)  希望使用原系统的功能,而且还希望增加一些新的功能。

4)  编写新类的成本小于所有人学会使用或者未来维护原系统上所需的成本。

重学设计模式 - Facade模式相关推荐

  1. 重学设计模式--读后总结篇,我理解的设计模式!!(二)

    极力推荐小傅哥的重学设计模式!!! 一.二十三种设计模式 1.二十三种设计模式 1.1 工厂方法模式 1.2 抽象工厂模式 1.3 建造者模式 1.4 原型模式 1.5 单例模式 1.6 适配器模式 ...

  2. 重学设计模式——你真的面向对象了吗?

    /   今日科技快讯   / 据报道,微软昨日宣布收购游戏公司动视暴雪.微软将以每股95.00美元的价格收购动视暴雪,这笔全现金交易价值687亿美元.交易完成后,微软将成为按营收计算的全球第三大游戏公 ...

  3. 《重学设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料...

    持续坚持原创输出,点击蓝字关注我吧 作者:小傅哥 博客:https://bugstack.cn ❝ 沉淀.分享.成长,让自己和他人都能有所收获!???? ❞ 目录 一.前言 二.简介 1. 谁发明了设 ...

  4. C++设计模式-Facade模式

    Facade模式 作用:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 动机 将一个系统划分成为若干个子系统有利于降低系统的复杂性.一 ...

  5. GOF 设计模式Facade模式 笔记

    Facade(外观) 意图:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 结构图 在以下情况使用: 当你要为一个复杂子系统提供一个简 ...

  6. 重学设计模式——你听说过门面模式吗?

    前言 在一文了解MVI架构,学起来吧~这篇文章的最后,我们提到了对网域层的理解类似于门面模式,所以这里单独写一篇文章介绍一下门面模式. 再前言 面试的时候,面试官都会问用过什么设计模式,99%程序员的 ...

  7. 重学设计模式(三、设计模式-工厂模式)

    1.工厂方法模式 1.1.什么是工厂模式 在了解工厂方法模式前,我们先了解一下什么是工厂模式. 定义:工厂模式,是一种创建型设计模式,它提供了在超类中创建产品对象的工厂接口,将产品对象的实际创建工作推 ...

  8. 重学设计模式(三、设计模式-原型模式)

    1.原型模式 1.1.什么是原型模式 定义:原型设计模式是创建模式的一种,因此它提供了一种对象创建机制.它允许用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象. 提问 ...

  9. 一起学设计模式 - 代理模式

    理模式(ProxyPattern)属于 结构型模式的一种,给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象. 概述 身处华夏大地的 ...

最新文章

  1. python numpy指定列最大值,统计次数
  2. 2019 ICPC World Finals Problem J. Miniature Golf
  3. Will not attempt to authenticate using SASL | dubbo项目启动特别慢,拉取 zookeeper 服务日志打印特别慢
  4. 蚁群算法matlab vrp问题车辆限重,蚁群算法MATLAB解VRP问题
  5. 如和用Python获取今日头条上面三千美女图,且看教程
  6. C#中枚举类型enum的使用[转载]
  7. 比雷蛇0day更严重:通过虚拟赛睿外设即获取 Windows 管理员权限
  8. 基台和种植体如何连接_种植牙所用的材料是什么?安不安全?种植牙手术后该如何护理?...
  9. 快速排序时间复杂度分析
  10. 计算机cad制图软件有哪些,cad制图软件有哪些?
  11. 单招计算机专业常见面试题库,历年高职单招面试常见问题集锦
  12. 合并mp3 例子代码
  13. A Knowledge-Grounded Neural Conversation Model
  14. CO03生产订单“状态”值对应表和值描述对应表(TJ02T) 和通过BAPI(STATUS_TEXT_EDIT)获取
  15. Flask实现简单搜索功能
  16. 计算机会计u8实验报告,用友erp,u8实验总结
  17. UVA - 10118Free Candies(记忆化搜索)
  18. 【天梯赛练习题(c语言)】
  19. 那些有趣/实用的 Chrome 扩展神器系列(六)
  20. Azure RTOS ThreadX 的功能组件

热门文章

  1. Cadence学习篇(1) Cadence原理图工程以及原理图库的创建
  2. uni-app H5 上传图片
  3. 推荐系统中的pointwise和pairwise区别
  4. 第二十九章 OOTV杯超级模式大赛-模式总结(读书笔记)
  5. JAVA实现短信接口的调用
  6. javascript--浅谈函数与闭包
  7. 考验直播平台搭建水平的十个性能指标
  8. AutoDesk CAD如何彻底卸载/不影响二次安装
  9. Conda各平台安装配置和使用Python环境(保姆级教程)
  10. 145.如何评价个性化推荐系统的效果-2