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 list中append()与extend()用法分享
Mar 24 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
Python爬虫之爬取某文库文档数据
Apr 21 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 Python
TensorFlow的自动求导原理分析
May 26 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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
无线电的诞生过程
2021/03/01 无线电
PHP 编程安全性小结
2010/01/08 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
python 数据加密代码
2008/12/24 Python
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
ansible作为python模块库使用的方法实例
2017/01/17 Python
浅谈python标准库--functools.partial
2019/03/13 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
Python多线程的退出控制实现
2020/08/10 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
园艺专业毕业生求职信
2014/09/02 职场文书
见习报告的格式
2014/10/31 职场文书
求职简历自我评价2015
2015/03/10 职场文书
《绝招》教学反思
2016/02/20 职场文书
2019军训心得体会
2019/06/27 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android