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