python 设计模式之门面模式

一个简单的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设计模式之MVC模式
# -*- coding: utf-8 -*- # author:baoshan quotes = ('A man is not complete until he is married. Then ...
- python设计模式之模板模式
python设计模式之模板模式 编写优秀代码的一个要素是避免冗余.在面向对象编程中,方法和函数是我们用来避免编写冗余代码的重要工具. 现实中,我们没法始终写出100%通用的代码.许多算法都有一些(但并 ...
- python设计模式之状态模式
python设计模式之状态模式 面向对象编程着力于在对象交互时改变它们的状态.在很多问题中,有限状态机(通常名为状态机)是一个非常方便的状态转换建模(并在必要时以数学方式形式化)工具.首先,什么是状态 ...
- python设计模式之解释器模式
python设计模式之解释器模式 对每个应用来说,至少有以下两种不同的用户分类. [ ] 基本用户:这类用户只希望能够凭直觉使用应用.他们不喜欢花太多时间配置或学习应用的内部.对他们来说,基本的用法就 ...
- python设计模式之命令模式
python设计模式之命令模式 现在多数应用都有撤销操作.虽然难以想象,但在很多年里,任何软件中确实都不存在撤销操作.撤销操作是在1974年引入的,但Fortran和Lisp分别早在1957年和195 ...
- python设计模式之外观模式
python设计模式之外观模式 系统会随着演化变得非常复杂,最终形成大量的(并且有时是令人迷惑的)类和交互,这种情况并不少见.许多情况下,我们并不想把这种复杂性暴露给客户端.外观设计模式有助于隐藏系统 ...
- python设计模式之原型模式
python设计模式之原型模式 对于原型模式而言,其中最主要的部分就是关于一个对象的复制,其中就包含两个方面:1.浅复制:2.深复制.具体的区别请看我相关的随笔.这里简略的说明一下,浅复制就等于对 ...
- python设计模式之建造者模式
python设计模式之建造者模式 建造者模式的适用范围:想要创建一个由多个部分组成的对象,而且它的构成需要一步接一步的完成.只有当各个部分都完成了,这个对象才完整.建造者模式表现为复杂对象的创建与 ...
随机推荐
- MySQL和PostgreSQL比较
1.MySQL相对来说比较年轻,首度出现在1994年.它声称自己是最流行的开源数据库.MySQL就是LAMP(用于Web开发的软件包,包括 Linux.Apache及Perl/PHP/Python)中 ...
- python 闯关之路四(下)(并发编程与数据库编程) 并发编程重点
python 闯关之路四(下)(并发编程与数据库编程) 并发编程重点: 1 2 3 4 5 6 7 并发编程:线程.进程.队列.IO多路模型 操作系统工作原理介绍.线程.进程演化史.特点.区别 ...
- Nodejs-文件流
1.什么是流? 流是程序输入输出的一个连续的字节序列. 有文件流,网络流,设备(例如鼠标,键盘,磁盘,调制解调器和打印机)的输入输出都是用流来处理的. 任何数据的最根本表现形式都是二进制. 读取文件 ...
- laravel5.2总结--任务调度
你可以通过 command() 来调用 artisan 命令, call 来调用方法或函数, 或者 terminal() 来执行单行命令脚本: 1.在app/Console/Commands文件夹 ...
- 深入浅出Hyper-V网络虚拟化(序)
服务器虚拟化已经越来越普及,很多企业也都在尝试着将现有业务转换成虚拟化的方式来运行,即在一个物理服务器上虚拟出多个实例,而每个实例彼此隔离,就好像在使用一台真实主机一样:网络虚拟化也同样如此,在同一条 ...
- gulp基本入门
gulp用于自动化和提高工作流,类似于grunt.gulp适用于nodejs平台. gulp基础: gulp两个主要的功能是读取想要处理的文件,把处理好的文件放到指定的地方gulp.src()找出 ...
- python实现删除空文件夹 附源代码
前言:空文件夹虽然不占空间,但是有时候看着确实挺烦的(别误会,我不是强迫症!),所以写了一个用于删除当前目录下的空文件夹的小程序 环境:win7 64位:python2.7:IDE pycharm20 ...
- Leetcode 532.数组中的K-diff数对
数组中的K-diff数对 给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对.这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字 ...
- mojoportal中使用jquey的插件
以前在mojo中使用jquery的插件,都是把插件的文件内容直接写到了相关的模块中,这样的问题是不整洁,一大串代码. 如果直接在layout.master中引入插件文件,或者在自定义模块中引入插件文件 ...
- editrules
editrules editrules是用来设置一些可用于可编辑列的colModel的额外属性的.大多数的时候是用来在提交到服务器之前验证用户的输入合法性的.比如editrules:{edith ...