本文实例讲述了python设计模式之门面模式。分享给大家供大家参考,具体如下:

facade:建筑物的表面

门面模式是一个软件工程设计模式,主要用于面向对象编程。 一个门面可以看作是为大段代码提供简单接口的对象,就像类库。

门面模式被归入建筑设计模式。门面模式隐藏系统内部的细节和复杂度,给用户提供一个简单的接口,采用门面模式,用户能够使用简单的接口进行工作,而不用担心系统的复杂。

理解门面模式最重要的一点就是它提供的简单接口是系统的一部分。因此提供简单易用的功能要胜过完整的功能。

门面模式的优点是向用户提供的基础类的操作,在当前门面模式的实现下,是不会向用户提供可控的,定制化的接口。

基于以上原因,门面模式不是对子系统的封装,而是对可选的功能提供简单的接口

下面是用块图,对门面模式的解释:

1.在块图表中,我们有将计算机分成三种类来表示:CPU,Memory,HardDrive。

cpu类有一个方法是jump()和execute(),Memory类有方法,load(),HardDrive类有一个read()方法

2.我们有个一个门面类,Computer Class ,提供start()方法给用户。

3.当用户想要开启电脑系统的时候,它调用Computer类的start()方法.

一个简单的python例子:

让我们来考虑一个测试自动化的框架,测试需要运行在特定构建类上,比如'TC1,TC2…TCn',每一个类都包涵一个方法'run()'来执行测试。

我们提供了一个门面-TestRunner-在测试类之上,作为执行测试的简单接口。以这种方式,客户不在需要担心有多少测试在执行,怎么样执行他。

TestRunner类有一个方法名runAll,是执行已经注册的所有测试。

当用户的自动框架为执行测试去构建,作为客户,他需要创建一个TestRunner类,调用runall方法,runall方法会返回创建的测试对象,

并调用他们的run 方法,这样执行了所有测试。

以下是代码: import time

class TC1:

def run(self):

print "####In Test 1####"

time.sleep(1)

print "Setting up"

time.sleep(1)

print "Running test"

time.sleep(1)

print "Tearing down"

time.sleep(1)

print "Test Finished\n"

class TC2:

def run(self):

print "#####In Test 2 ######"

time.sleep(1)

print "Setting up"

time.sleep(1)

print "Running test"

time.sleep(1)

print "Tearing down"

time.sleep(1)

print "Test Finished\n"

class TC3:

def run(self):

print "#####In Test 3 ######"

time.sleep(1)

print "Setting up"

time.sleep(1)

print "Running test"

time.sleep(1)

print "Tearing down"

time.sleep(1)

print "Test Finished\n"

#Facade

class TestRunner:

def __init__(self):

self.tc1 = TC1()

self.tc2 = TC2()

self.tc3 = TC3()

def runAll(self):

self.tc1.run()

self.tc2.run()

self.tc3.run()

#Client

if __name__ == '__main__':

testrunner = TestRunner()

testrunner.runAll()

运行结果:

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

python设计模式名片_Python设计模式之门面模式简单示例相关推荐

  1. python线程监控_Python实现线程状态监测简单示例

    本文实例讲述了Python实现线程状态监测.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- from threading import Thread import ti ...

  2. python设计模式名片_Python 设计模式 简单工厂(设计模式之禅)

    # -*- coding: utf-8 -*- # author: zhonghua # filename: pd_factory.py # create: 2016/3/28 # version: ...

  3. Python学习教程(Python学习路线):Python3之递归函数简单示例

    Python学习教程(Python学习路线):Python3之递归函数简单示例 概述 递归函数即直接或间接调用自身的函数,且递归过程中必须有一个明确的递归结束条件,称为递归出口.递归极其强大一点就是能 ...

  4. python中英文字符怎么区分-python 利用utf-8编码判断中英文字符的简单示例

    这篇文章主要为大家详细介绍了python 利用utf-8编码判断中英文字符的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣python 利用utf-8编码判断中英文字符的简单示例的小伙伴,下 ...

  5. python使用requests库下载单张图片的简单示例

    python使用requests库下载单张图片的简单示例 简要说明 代码示例 简要说明 下载图片的核心代码如下: res = requests.get(url=img_url, headers=hea ...

  6. 颜值10分姐姐带我玩转java设计模式(内附照片)- 门面模式

    先不说话,直接来张姐姐照片,称呼包子姐姐即可,希望包子姐姐能带飞. 原创不易,麻烦先三连,再细看,谢谢 示例的源码可以直接通过csdn下载也可以通过git导出:https://github.com/i ...

  7. JAVA设计模式之(九)门面模式(外观模式)

    本文继续介绍23种设计模式系列之门面模式(外观模式). 医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其"分而治之",把一个系统划分为几个较小的子 ...

  8. php设计之初用于什么,PHP设计模式(七)之门面模式

    一.什么是外观模式(Facade Pattern) 定义:外观模式又称门面模式,提供一个统一的接口,用来访问子系统中的一群接口. 外部与子系统之间的通信采用门面(Facade)对象来完成. [举例]比 ...

  9. Java设计模式之(九)——门面模式

    1.什么是门面模式? Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher ...

最新文章

  1. R语言使用aov函数进行单因素协方差分析(One-way ANCOVA)、使用multcomp包的glht函数检验组均值之间所有成对对比差异、通过contrast参数自定义对比组进行组间两两方差分析
  2. 两个形状不同的长方形周长_借助思维导图玩转小学阶段三种不同计算图形周长的方法!...
  3. JS-匀速运动-运动停止
  4. php隐藏webshell_【web端权限维持】利用ADS隐藏webshell
  5. 模板or定制网站如何选?
  6. CentOS 7下用firewall-cmd
  7. Bzoj 3122 随机数生成器
  8. 一个特别棒的远程在线学习方法的分享!!!妈妈再也不怕我的网课录屏啦学不进去啦!!!
  9. Java集合之LinkedList
  10. 面试题27. 二叉树的镜像
  11. 信息学奥赛C++语言: 求和
  12. 从PHPer到Gopher要经历的一些转变
  13. html div三角形,css+div打造三角形(箭头)
  14. 8个适合新手的Python小项目
  15. Assimp 裁剪编译 Android 库
  16. 计算机无steam服务,有了这个,或许以后都不用登录电脑的Steam了
  17. 方维团购V3.07版本短信接口开发
  18. API接口安全思考和最佳实践
  19. [JAVA]用数学解释数组移步问题(新增对链表移步的解释)
  20. 百度贴吧头像上传无尺寸限制

热门文章

  1. 流星雨直播:都市安魂新曲
  2. 微信聊天记录服务器端口是什么意思,微信端口异常是什么意思?
  3. 判断一个年份是否是闰年
  4. Go 实现短链接服务
  5. 一文看懂HTTPS、证书机构(CA)、证书、数字签名、私钥、公钥
  6. cmd命令行下怎么切换目录 命令行改变目录
  7. 安装RocketChat报错:npm WARN saveError ENOENT: no such file or directory, open ‘/tmp/bundle/programs/web.
  8. 都才40出头,近一个月已有至少5名优秀青年学者英年早逝!健康不容忽视
  9. 《重构》第七章--读书笔记
  10. 还在呼吸致命空气?专业的斐讯空气检测仪,让你生活更健康!