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代码嵌入C++程序进行编写的实例
Jul 31 Python
Python对数据库操作
Mar 28 Python
python实现多线程网页下载器
Apr 15 Python
Pandas实现数据类型转换的一些小技巧汇总
May 07 Python
在django模板中实现超链接配置
Aug 21 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
在Django中实现添加user到group并查看
Nov 18 Python
爬虫代理池Python3WebSpider源代码测试过程解析
Dec 20 Python
Python单链表原理与实现方法详解
Feb 22 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
基于Django快速集成Echarts代码示例
Dec 01 Python
Python实现排序方法常见的四种
Jul 15 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实现文件安全下载
2006/10/09 PHP
用PHP 快速生成 Flash 动画的方法
2007/03/06 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
修复IE9&safari 的sort方法
2011/10/21 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
js同源策略详解
2015/05/21 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
python里对list中的整数求平均并排序
2014/09/12 Python
Python循环语句中else的用法总结
2016/09/11 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
20行python代码实现人脸识别
2019/05/05 Python
创建Django项目图文实例详解
2019/06/06 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
Python基于爬虫实现全网搜索并下载音乐
2021/02/14 Python
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
门卫工作岗位职责
2013/12/17 职场文书
工作时间证明
2015/06/15 职场文书
记者节感言
2015/08/03 职场文书
房产遗嘱范本
2015/08/06 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书