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:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
和孩子一起学习python之变量命名规则
May 27 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
python的concat等多种用法详解
Nov 28 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
Python实现的银行系统模拟程序完整案例
Apr 12 Python
Python中__repr__和__str__区别详解
Nov 07 Python
python实现tail -f 功能
Jan 17 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
python 获取域名到期时间的方法步骤
Feb 10 Python
python中pandas.read_csv()函数的深入讲解
Mar 29 Python
Django 实现jwt认证的示例
Apr 30 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
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
jquery 的 $("#id").html() 无内容的解决方法
2010/06/07 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
python双向链表原理与实现方法详解
2019/12/03 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
基于python实现模拟数据结构模型
2020/06/12 Python
物业管理工作方案
2014/05/10 职场文书
2015年导购员工作总结
2015/04/25 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
银行求职信怎么写
2019/06/20 职场文书