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的Django框架代码的一些示例
Apr 20 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
独特的python循环语句
Nov 20 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
Sep 24 Python
Python面向对象之继承代码详解
Jan 29 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
Nov 30 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
python同时替换多个字符串方法示例
Sep 17 Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 Python
python如何在word中存储本地图片
Apr 07 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
js实现简单扫雷
2020/11/27 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
python线程join方法原理解析
2020/02/11 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
python利用opencv保存、播放视频
2020/11/02 Python
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
2013年高中生自我评价
2013/10/23 职场文书
建筑设计师岗位职责
2013/11/18 职场文书
第二课堂活动总结
2014/05/07 职场文书
应届生面试求职信
2014/07/02 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
员工离职通知函
2015/04/25 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
实习证明模板
2015/06/16 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
mysql 索引合并的使用
2021/08/30 MySQL
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python
Spring Boot 实现 WebSocket
2022/04/30 Java/Android