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的web.py框架并从hello world开始编程
Apr 25 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
python自带的http模块详解
Nov 06 Python
分享给Python新手们的几道简单练习题
Sep 21 Python
python文本数据相似度的度量
Mar 12 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
浅析python表达式4+0.5值的数据类型
Feb 26 Python
Python实现获取当前目录下文件名代码详解
Mar 10 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
详解python tkinter 图片插入问题
Sep 03 Python
python图片灰度化处理的几种方法
Jun 23 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变量可用字符
2014/05/28 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
js实现搜索栏效果
2018/11/16 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
python实现三维拟合的方法
2018/12/29 Python
Python提取频域特征知识点浅析
2019/03/04 Python
python Django的web开发实例(入门)
2019/07/31 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
化工工艺专业求职信
2013/09/22 职场文书
投标承诺书怎么写
2014/05/24 职场文书
世博会口号
2014/06/20 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js