1. 外观模式(Facade)介绍

UML类图

用途

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

优点

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

2. 示例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-'''Facade Pattern with Python Code
'''# 外观类
class Fund(object):def __init__(self):self.stocka = StockA()self.stockb = StockB()self.realty = Realty()def buy(self):self.stocka.buy()self.stockb.buy()self.realty.buy()def sell(self):self.stocka.sell()self.stockb.sell()self.realty.sell()# 投资股票A类
class StockA(object):def buy(self):print('buy StockA')def sell(self):print('sell StockA')# 投资股票B类
class StockB(object):def buy(self):print('buy StockB')def sell(self):print('sell StockB')# 投资房地产
class Realty(object):def buy(self):print('buy Realty')def sell(self):print('sell Realty')class Client(object):def main(self):fund = Fund()fund.buy()fund.sell()if __name__== "__main__":Client().main()

输出:

# ./Facade.py
buy StockA
buy StockB
buy Realty
sell StockA
sell StockB
sell Realty

参考:
https://www.cnblogs.com/onepiece-andy/p/python-facade-pattern.html
https://www.jianshu.com/p/ef6f5616451a

python设计模式10-外观模式相关推荐

  1. Python设计模式之外观模式实例讲解

    Python中设计模式之外观模式主张以分多模块进行代码管理而减少耦合,下面用实例来进行说明. 应用特性: 在很多复杂而小功能需要调用需求时,而且这些调用往往还有一定相关性,即一调用就是一系列的. 结构 ...

  2. Python设计模式-职责链模式

    Python设计模式-职责链模式 代码基于3.5.2,代码如下; #coding:utf-8 #职责链模式class Handler():def __init__(self):self.success ...

  3. python策略模式包含角色_详解Python设计模式之策略模式

    虽然设计模式与语言无关,但这并不意味着每一个模式都能在每一门语言中使用.<设计模式:可复用面向对象软件的基础>一书中有 23 个模式,其中有 16 个在动态语言中"不见了,或者简 ...

  4. 移动开发 | Swift 中的设计模式 #3 外观模式与适配器模式

    本文是我的设计模式系列教程的第三篇.在第一篇文章中,我介绍了 创建型模式中的工厂模式和单例模式.在第二篇文章中,又讨论了一下 行为型模式中的观察者模式和备忘录模式. 在本文中,我会就结构型模式中的外观 ...

  5. 如何让孩子爱上设计模式 ——11.外观模式(Facade Pattern)

    如何让孩子爱上设计模式 --11.外观模式(Facade Pattern) 标签: 设计模式初涉 场景引入 相信各位玩过LOL英雄联盟游戏的童鞋,对下面两个英雄都不会陌生吧:       分别是瑞雯和 ...

  6. Python设计模式-装饰器模式

    Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...

  7. Python设计模式-中介者模式

    Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...

  8. Python设计模式-享元模式

    Python设计模式-享元模式 基于Python3.5.2,代码如下 #coding:utf-8class Coffee:name = ""price = 0def __init_ ...

  9. python的编程模式-Python设计模式之状态模式原理与用法详解

    本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...

  10. JS常用的设计模式(7)—— 外观模式

    JS常用的设计模式(7)-- 外观模式 外观模式(门面模式),是一种相对简单而又无处不在的模式.外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用. 用一段再简单不过的代码来表示 var ...

最新文章

  1. 20155222卢梓杰 实验三 免杀原理与实践
  2. java笔记4-类型转换
  3. (转)iOS 6的Rotation--详细版本
  4. LDC1000学习资料
  5. 解决Ajax中的缓存问题
  6. Unexpected exception 'Cannot run program '的解决
  7. 【.NET开发之美】使用ComponentOne提高.NET DataMap中的加载速度
  8. 黄山学院计算机协会,教学研究项目结题报告书
  9. 华为手机耳机sws音效是什么_【小知识】:华为SWS音效介绍。
  10. 一文搞定卷积神经网络——从原理到应用
  11. introduction
  12. 金职院计算机网络技术中外合作有什么不一样,金华职业技术学院学费多少
  13. Java中对两个对象进行比较大小
  14. win10pin不可用进不去系统_人脸识别门禁控制系统+安检通道
  15. iOS 自定义相机,拍照旋转
  16. 记一次天地图https无法访问
  17. 计算机专业省赛一等奖有什么好处,竞赛省一等奖有什么用
  18. 贴现、贴现率、贴现值、现值、折现值、PV搞搞清楚
  19. what is vmagent
  20. 余数的数学定义和性质

热门文章

  1. JavaScript是如何工作的:Web推送通知的机制
  2. 聊聊RPC之Provider
  3. c++11 多线程 2c++ concurrency in action
  4. OGEngine引擎开发slot 手游强势来袭
  5. OAF_OAF组件系列1 - Item Style汇总(概念)
  6. redis-py说明文件(转)
  7. 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~二 DBContext实例中,表实体对象是怎么被加入的...
  8. 如何设置 jqplot 图表插件的轴和网格
  9. 从市场角度看服务器虚拟化
  10. 调试方法和技巧(zz)