Python設計模式 二十 中介模式

2021-07-22 06:12:40 字數 2524 閱讀 8620

# -*- 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...