python 设计模式之中介模式
import time
class TC:
def __init__(self):
self._tm = tm
self._bProblem = 0 def setup(self):
print "Setting up the Test"
time.sleep(1)
self._tm.prepareReporting() def execute(self):
if not self._bProblem:
print "Executing the test"
time.sleep(1)
else:
print "Problem in setup,Test not executed." def tearDown(self):
if not self._bProblem:
print "Tearing down"
time.sleep(1)
self._tm.publishReport()
else:
print "Test not executed.No tear down required." def setTM(self, TM):
self._tm = tm def setProblem(self, value):
self._bProblem = value class Reporter:
def __init__(self):
self._tm = None def prepare(self):
print "Reporter Class is preparing to report the results"
time.sleep(1) def report(self):
print "Reporting the results of Test"
time.sleep(1) def setTM(self, TM):
self._tm = tm class DB:
def __init__(self):
self._tm = None def insert(self):
print "Inserting the execution begin status in the Database"
time.sleep(1)
import random
if random.randrange(1,4) == 3:
return -1 def update(self):
print "Updating the test results in Database"
time.sleep(1) def setTM(self, TM):
self._tm = tm class TestManager:
def __init__(self):
self._reporter = None
self._db = None
self._tc = None def prepareReporting(self):
rvalue = self._db.insert()
if rvalue == -1:
self._tc.setProblem(1)
self._reporter.prepare() def setReporter(self, reporter):
self._reporter = reporter def setDB(self, db):
self._db = db def publishReport(self):
self._db.update()
rvalue = self._reporter.report() def setTC(self, tc):
self._tc = tc if __name__ == '__main__':
reporter = Reporter()
db = DB()
tm = TestManager()
tm.setReporter(reporter)
tm.setDB(db) reporter.setTM(tm)
db.setTM(tm) while(1):
tc = TC()
tc.setTM(tm)
tm.setTC(tc)
tc.setup()
tc.execute()
tc.tearDown()
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设计模式之建造者模式 建造者模式的适用范围:想要创建一个由多个部分组成的对象,而且它的构成需要一步接一步的完成.只有当各个部分都完成了,这个对象才完整.建造者模式表现为复杂对象的创建与 ...
- python设计模式之门面模式
一.结构型设计模式 门面模式与单例模式,工厂模式不同,它是一种结构型模式. 结构型模式描述如何将对象和类组合成更大的结构 结构型模式是一种能够简化设计工作的模式,它能找出更简单的方法来认识或表示实体之 ...
随机推荐
- gradle构建
https://blog.csdn.net/baidu_30809315/article/details/77865414
- (原)Unreal渲染相关的缓冲区 及其 自定义代码几种抓取
@authot: 白袍小道 转载说明那啥即可. (图片和本文无关,嘿嘿,坑一下) 以下为Unreal4.18版本中对GPUBuffer部分的分析结果 (插入:比之够着,知至目的) ...
- jQuery选择器之类选择器
类选择器,顾名思义,通过class样式类名来获取节点. 描述: $('.class') 类选择器,相对于id选择器来说,效率相对会低一些,但是优势就是可以多选. 同样的jQuery在实现上,对于类选择 ...
- C#如何在keydown事件里判断按下的是左shift还是右shift
public partial class Form1 : Form { [System.Runtime.InteropServices.DllImport("user32.dll" ...
- asp+access win2008php+mysql /dedecms 配置总结
1. IIS 应用池 高级设置 启用32位应用程序:True 2. c盘window/Temp user 应该有管理权限 如果不行 creator owner 给予修改权限 ...
- 【bzoj2500】幸福的道路 树形dp+倍增RMQ+二分
原文地址:http://www.cnblogs.com/GXZlegend/p/6825389.html 题目描述 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一 ...
- HDU 6165 FFF at Valentine(Tarjan缩点+拓扑排序)
FFF at Valentine Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- macOS Sierra下如何打开任何来源(10.12系统)
转载声明:本站文章无特别说明皆为原创,转载请注明:史蒂芬周的博客, 一定有很多朋友和小子一样,迫不及待的升级到了macOS Sierra,随之而来的是第三方应用都无法打开了,提示无法打开或者扔进废纸篓 ...
- java自定义类型 比较排序 Comparator接口
String service_time = "6:00:00,7:00:00,8:00:00,9:00:00,10:00:00,11:00:00,12:00:00,13:00:00,14:0 ...
- 为IE和chrome编写单独的样式
flex布局在IE10上不支持,为IE10编写特定的样式可以用判断navigator.userAgent 的方法 var doc = document.documentElement; doc.set ...