Python设计模式之外观模式实例详解


Posted in Python onJanuary 17, 2019

本文实例讲述了Python设计模式之外观模式。分享给大家供大家参考,具体如下:

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

下面是一个外观模式的demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——外观模式
facade_pattern.py
外观模式(Facade Pattern):为子系统中的一组接口提供一个一致界面,此模式定义一个高层接口,使得子系统更加容易是用
"""
# 外观类
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'
if __name__=="__main__":
  fund = Fund()
  fund.buy()
  fund.sell()

运行结果:

buy StockA
buy StockB
buy Realty
sell StockA
sell StockB
sell Realty

上面类的设计如下图:

Python设计模式之外观模式实例详解

Fund类需要知道子系统类的功能,以便将适当的client请求发送给合适的子系统对象,使子系统的使用更加简单

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python获取各操作系统硬件信息的方法
Jun 03 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
Nov 21 Python
python脚本生成caffe train_list.txt的方法
Apr 27 Python
Python绘制KS曲线的实现方法
Aug 13 Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
python 函数中的参数类型
Feb 11 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
7个关于Python的经典基础案例
Nov 07 Python
Python pycharm 同时加载多个项目的方法
Jan 17 #Python
Python设计模式之建造者模式实例详解
Jan 17 #Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 #Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 #Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 #Python
pycharm 实现显示project 选项卡的方法
Jan 17 #Python
pycharm修改界面主题颜色的方法
Jan 17 #Python
You might like
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
详解YII关联查询
2016/01/10 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
Javascript常考语句107条收集
2010/03/09 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
NumPy 数组使用大全
2019/04/25 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
秋季运动会活动方案
2014/02/05 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
卫生系统先进事迹
2014/05/13 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA
浅析JavaScript中的变量提升
2022/06/01 Javascript