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网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
Python制作爬虫采集小说
Oct 25 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
python3如何将docx转换成pdf文件
Mar 23 Python
浅析Python数据处理
May 02 Python
python3实现多线程聊天室
Dec 12 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
在python中利用numpy求解多项式以及多项式拟合的方法
Jul 03 Python
Python爬虫抓取技术的一些经验
Jul 12 Python
Python pandas RFM模型应用实例详解
Nov 20 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
python中使用序列的方法
2015/08/03 Python
python实现QQ批量登录功能
2019/06/19 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
英国网上花店:Bunches
2016/11/29 全球购物
互动出版网:专业书籍
2017/03/21 全球购物
银行员工职业规划范文
2014/01/21 职场文书
房地产推广策划方案
2014/05/19 职场文书
消防隐患整改通知书
2015/04/22 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
老人与海读书笔记
2015/06/26 职场文书