Python設計模式之中介模式簡單示例

2022-10-04 20:30:32 字數 2945 閱讀 9258

mediator pattern:中介模式

中介模式提供了一系列統一的系統介面。此模式也被認為是行為模式,因為他能選擇程式處理流程。

當許多類開始在互動中產生結果時,可以選用中介模式。當軟體開始組織的時候,許多使用者的要求新增更多的功能。

這就導致了要和以前的類不斷互動,除了新類。隨著系統的複雜度加大,類之間的互動變得頻繁,維護**變得困難。

中介模式 就是為了解決這個問題,通過允許類之間的松耦合。這樣中介模式就能了解系統中所有類的功能。類的功能就是與中介類進行互動。當類與類之間需要互動的時候,類就傳送資訊給中介,中介就**資訊給被請求的類。通過這樣,類與類之間的複雜度就減少了。

乙個簡單的中介模式例子:

乙個型別的中介模式例子可以在測試自動框架(包含4個類,tc,testmanager,reporter ,db)中被證明。

1.tc類是測試的響應,借助方法setup(),execute(),teardown()。

2.reporter類呼叫

當測試分類開始執行時,呼叫prepare方法。

當測試分類完成執行時,呼叫report()方法 ,

框架的測試響應就是好的幫助文件。

我也沒弄懂中介模式,讓人犯暈!

**貼出來:

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)

seelse:

print "test not executed.no tear down required."

def settm(self, tm):

self._tm = tm

def setproblem(self, value):

self._bproblem = v

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

cl程式設計客棧ass testmanager:

def __init__(self):

vvrpjtn self._report = 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 設計模式之中介者模式

至少半個多月的樣子沒寫部落格了,月初去了趟黃山,賞了美景,自然沒時間也沒條件敲部落格了,乙個多星期就這麼過去了。返回深圳後,工作積壓了一堆,然後白天就馬不停蹄的忙工作,晚上回家伺候小娃,又想早點休息,那是沒時間開機的。大頭小頭的工作也忙了一輪,第二輪還沒開始,這點空隙就是珍貴的部落格時間。做it這個...

設計模式之中介者模式

1 抽象中介者,mediator 抽象中介 author jin.li public abstract class mediator2 具體的中介者,主機板 主機板中介 author jin.li public class mainboard extends mediator if colleagu...