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 相关文章推荐
Pyramid Mako模板引入helper对象的步骤方法
Nov 27 Python
python求斐波那契数列示例分享
Feb 14 Python
使用 Python 获取 Linux 系统信息的代码
Jul 13 Python
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
记一次python 内存泄漏问题及解决过程
Nov 29 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
Python要如何实现列表排序的几种方法
Feb 21 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
python dict乱码如何解决
Jun 07 Python
五分钟带你搞懂python 迭代器与生成器
Aug 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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
自动分页的不完整解决方案
2007/01/12 PHP
php 301转向实现代码
2008/09/18 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
python实现在pickling的时候压缩的方法
2014/09/25 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
python正则实现提取电话功能
2018/02/24 Python
numpy中的高维数组转置实例
2018/04/17 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
django框架cookie和session用法实例详解
2019/12/10 Python
详解Python中namedtuple的使用
2020/04/27 Python
python多进程使用函数封装实例
2020/05/02 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
html5 学习简单的拾色器
2010/09/03 HTML / CSS
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
自荐信的两点禁忌
2013/10/30 职场文书
个人欠款担保书
2014/05/20 职场文书
企业文化标语口号
2014/06/09 职场文书
新闻报道策划方案
2014/06/11 职场文书
重阳节活动总结
2014/08/27 职场文书
重阳节慰问信
2015/02/15 职场文书
java中重写父类方法加不加@Override详解
2021/06/21 Java/Android