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程序的方法
Apr 21 Python
Python使用新浪微博API发送微博的例子
Apr 10 Python
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
python 中的int()函数怎么用
Oct 17 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 Python
用python批量下载apk
Dec 29 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 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
thinkPHP模板引擎用法示例
2016/12/08 PHP
PHP基于Closure类创建匿名函数的方法详解
2017/08/17 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
2018/10/30 PHP
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
分享Python字符串关键点
2015/12/13 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Numpy中的mask的使用
2018/07/21 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
使用Tkinter制作信息提示框
2020/02/18 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
电子专业自荐信
2014/07/01 职场文书
企业授权委托书范本
2014/09/22 职场文书
JS 基本概念详细介绍
2021/10/16 Javascript