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代码真的很爽
Aug 26 Python
python爬虫获取多页天涯帖子
Feb 23 Python
python素数筛选法浅析
Mar 19 Python
python循环定时中断执行某一段程序的实例
Jun 29 Python
基于Python安装pyecharts所遇的问题及解决方法
Aug 12 Python
Python文本处理简单易懂方法解析
Dec 19 Python
Python 实现将数组/矩阵转换成Image类
Jan 09 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
Python 爬虫的原理
Jul 30 Python
Python实现壁纸下载与轮换
Oct 19 Python
Python json解析库jsonpath原理及使用示例
Nov 25 Python
利用Python实现翻译HTML中的文本字符串
Jun 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调用Oracle存储过程
2006/10/09 PHP
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
jQuery示例收集
2010/11/05 Javascript
HTML颜色选择器实现代码
2010/11/23 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
python 中的int()函数怎么用
2017/10/17 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Django 请求Request的具体使用方法
2019/11/11 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
tensorflow 只恢复部分模型参数的实例
2020/01/06 Python
Python list运算操作代码实例解析
2020/01/20 Python
python实现数字炸弹游戏程序
2020/07/17 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
24个canvas基础知识小结
2014/12/17 HTML / CSS
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
心理学专业毕业生推荐信范文
2013/11/21 职场文书
《夜晚的实验》教学反思
2014/02/19 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
保险公司演讲稿
2014/09/02 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android