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中使用matplotlib模块绘制数据图的示例
May 04 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
Python编程实现正则删除命令功能
Aug 30 Python
Django使用Celery异步任务队列的使用
Mar 13 Python
python和flask中返回JSON数据的方法
Mar 26 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
Python实现图片批量加入水印代码实例
Nov 30 Python
python 写一个文件分发小程序
Dec 05 Python
浅析python实现动态规划背包问题
Dec 31 Python
python 模块导入问题汇总
Feb 01 Python
Django模型层实现多表关系创建和多表操作
Jul 21 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四种基础算法代码实例
2013/10/29 PHP
php中smarty区域循环的方法
2015/06/11 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
js的with语句使用方法
2007/09/21 Javascript
JavaScript的Cookies
2008/01/16 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
基本DOM节点操作
2017/01/17 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
python的迭代器与生成器实例详解
2014/07/16 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
python实现贪吃蛇游戏
2020/03/21 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
士力架广告词
2014/03/20 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
母亲节寄语大全
2015/02/27 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
员工福利申请报告
2015/05/15 职场文书
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers
Vue Element plus使用方法梳理
2022/12/24 Vue.js