python设计模式10-外观模式
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-外观模式相关推荐
- Python设计模式之外观模式实例讲解
Python中设计模式之外观模式主张以分多模块进行代码管理而减少耦合,下面用实例来进行说明. 应用特性: 在很多复杂而小功能需要调用需求时,而且这些调用往往还有一定相关性,即一调用就是一系列的. 结构 ...
- Python设计模式-职责链模式
Python设计模式-职责链模式 代码基于3.5.2,代码如下; #coding:utf-8 #职责链模式class Handler():def __init__(self):self.success ...
- python策略模式包含角色_详解Python设计模式之策略模式
虽然设计模式与语言无关,但这并不意味着每一个模式都能在每一门语言中使用.<设计模式:可复用面向对象软件的基础>一书中有 23 个模式,其中有 16 个在动态语言中"不见了,或者简 ...
- 移动开发 | Swift 中的设计模式 #3 外观模式与适配器模式
本文是我的设计模式系列教程的第三篇.在第一篇文章中,我介绍了 创建型模式中的工厂模式和单例模式.在第二篇文章中,又讨论了一下 行为型模式中的观察者模式和备忘录模式. 在本文中,我会就结构型模式中的外观 ...
- 如何让孩子爱上设计模式 ——11.外观模式(Facade Pattern)
如何让孩子爱上设计模式 --11.外观模式(Facade Pattern) 标签: 设计模式初涉 场景引入 相信各位玩过LOL英雄联盟游戏的童鞋,对下面两个英雄都不会陌生吧: 分别是瑞雯和 ...
- Python设计模式-装饰器模式
Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...
- Python设计模式-中介者模式
Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...
- Python设计模式-享元模式
Python设计模式-享元模式 基于Python3.5.2,代码如下 #coding:utf-8class Coffee:name = ""price = 0def __init_ ...
- python的编程模式-Python设计模式之状态模式原理与用法详解
本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...
- JS常用的设计模式(7)—— 外观模式
JS常用的设计模式(7)-- 外观模式 外观模式(门面模式),是一种相对简单而又无处不在的模式.外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用. 用一段再简单不过的代码来表示 var ...
最新文章
- 20155222卢梓杰 实验三 免杀原理与实践
- java笔记4-类型转换
- (转)iOS 6的Rotation--详细版本
- LDC1000学习资料
- 解决Ajax中的缓存问题
- Unexpected exception 'Cannot run program '的解决
- 【.NET开发之美】使用ComponentOne提高.NET DataMap中的加载速度
- 黄山学院计算机协会,教学研究项目结题报告书
- 华为手机耳机sws音效是什么_【小知识】:华为SWS音效介绍。
- 一文搞定卷积神经网络——从原理到应用
- introduction
- 金职院计算机网络技术中外合作有什么不一样,金华职业技术学院学费多少
- Java中对两个对象进行比较大小
- win10pin不可用进不去系统_人脸识别门禁控制系统+安检通道
- iOS 自定义相机,拍照旋转
- 记一次天地图https无法访问
- 计算机专业省赛一等奖有什么好处,竞赛省一等奖有什么用
- 贴现、贴现率、贴现值、现值、折现值、PV搞搞清楚
- what is vmagent
- 余数的数学定义和性质
热门文章
- JavaScript是如何工作的:Web推送通知的机制
- 聊聊RPC之Provider
- c++11 多线程 2c++ concurrency in action
- OGEngine引擎开发slot 手游强势来袭
- OAF_OAF组件系列1 - Item Style汇总(概念)
- redis-py说明文件(转)
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~二 DBContext实例中,表实体对象是怎么被加入的...
- 如何设置 jqplot 图表插件的轴和网格
- 从市场角度看服务器虚拟化
- 调试方法和技巧(zz)