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列表生成器的循环技巧分享
Mar 06 Python
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
Python iter()函数用法实例分析
Mar 17 Python
Python学习_几种存取xls/xlsx文件的方法总结
May 03 Python
浅析python中的迭代与迭代对象
Oct 08 Python
使用11行Python代码盗取了室友的U盘内容
Oct 23 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
Python循环中else,break和continue的用法实例详解
Jul 11 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
python关于倒排列的知识点总结
Oct 13 Python
基于OpenCV的网络实时视频流传输的实现
Nov 15 Python
Python天气语音播报小助手
Sep 25 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
Redis构建分布式锁
2017/03/28 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
Javascript变量作用域详解
2013/12/06 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python运算符重载用法实例分析
2015/06/01 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
基于python实现计算两组数据P值
2020/07/10 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
名人演讲稿范文
2013/12/28 职场文书
电台实习生求职信
2014/02/25 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
企业年会主持词
2014/03/27 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
人民调解员培训方案
2014/06/05 职场文书
广播体操比赛口号
2014/06/10 职场文书
财务检查整改报告
2014/11/06 职场文书
北京颐和园导游词
2015/01/30 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
Python进行区间取值案例讲解
2021/08/02 Python