# -*- coding: utf-8 -*-
import random
import time
class
tc:def
__init__
(self):
self._tm = none
self._bproblem = 0
defsetup
(self):
print("設定測試")
time.sleep(0.1)
self._tm.preparereporting()
defexecute
(self):
ifnot self._bproblem:
print("執行測試")
time.sleep(0.1)
else:
print("問題設定。測試不執行。")
defteardown
(self):
ifnot self._bproblem:
print("拆除")
time.sleep(0.1)
self._tm.publishreport()
else:
print("測試不執行。沒有拆除需要")
defsettm
(self, tm):
self._tm = tm
defsetproblem
(self, value):
self._bproblem = value
class
reporter:
def__init__
(self):
self._tm = none
defprepare
(self):
print("報表類正準備報告結果")
time.sleep(0.1)
defreport
(self):
print("報告測試的結果")
time.sleep(0.1)
defsettm
(self, tm):
self._tm = tm
class
db:def
__init__
(self):
self._tm = none
definsert
(self):
print("增加執行開始狀態在資料庫")
time.sleep(0.1)
# 下面的**是模擬從db到tc通訊
if random.randrange(1, 4) == 3:
return -1
defupdate
(self):
print("更新資料庫中的測試結果")
time.sleep(0.1)
defsettm
(self, tm):
self._tm = tm
class
testmanager:
def__init__
(self):
self._reporter = none
self._db = none
self._tc = none
defpreparereporting
(self):
rvalue = self._db.insert()
if rvalue == -1:
self._tc.setproblem(1)
self._reporter.prepare()
defsetreporter
(self, reporter):
self._reporter = reporter
defsetdb
(self, db):
self._db = db
defpublishreport
(self):
self._db.update()
self._reporter.report()
defsettc
(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)
#為了簡化,我們在相同的測試迴圈。
#實際上,它可能是有關各種獨特的測試類和它們的物件
python 設計模式之中介者模式
至少半個多月的樣子沒寫部落格了,月初去了趟黃山,賞了美景,自然沒時間也沒條件敲部落格了,乙個多星期就這麼過去了。返回深圳後,工作積壓了一堆,然後白天就馬不停蹄的忙工作,晚上回家伺候小娃,又想早點休息,那是沒時間開機的。大頭小頭的工作也忙了一輪,第二輪還沒開始,這點空隙就是珍貴的部落格時間。做it這個...
Python設計模式之中介模式簡單示例
mediator pattern 中介模式 中介模式提供了一系列統一的系統介面。此模式也被認為是行為模式,因為他能選擇程式處理流程。當許多類開始在互動中產生結果時,可以選用中介模式。當軟體開始組織的時候,許多使用者的要求新增更多的功能。這就導致了要和以前的類不斷互動,除了新類。隨著系統的複雜度加大,...
二十一 中介者模式 設計模式學習筆記
1 需求 美國和伊拉克之間的對話都是通過聯合國安理會作為中介來完成。2 uml類圖 a.國家抽象colleague類 package com.longinus.mp public abstract class country b.抽象中介者類package com.longinus.mp publi...