国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python設(shè)計(jì)模式之中介模式簡單示例

2020-02-16 11:32:26
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Python設(shè)計(jì)模式之中介模式。分享給大家供大家參考,具體如下:

Mediator Pattern:中介模式

中介模式提供了一系列統(tǒng)一的系統(tǒng)接口。此模式也被認(rèn)為是行為模式,因?yàn)樗苓x擇程序處理流程。

當(dāng)許多類開始在交互中產(chǎn)生結(jié)果時(shí),可以選用中介模式。當(dāng)軟件開始組織的時(shí)候,許多用戶的要求添加更多的功能。

這就導(dǎo)致了要和以前的類不斷交互,除了新類。隨著系統(tǒng)的復(fù)雜度加大,類之間的交互變得頻繁,維護(hù)代碼變得困難。

中介模式 就是為了解決這個(gè)問題,通過允許類之間的松耦合。這樣中介模式就能了解系統(tǒng)中所有類的功能。類的功能就是與中介類進(jìn)行交互。當(dāng)類與類之間需要交互的時(shí)候,類就發(fā)送信息給中介,中介就轉(zhuǎn)發(fā)信息給被請(qǐng)求的類。通過這樣,類與類之間的復(fù)雜度就減少了。

一個(gè)簡單的中介模式例子:

一個(gè)類型的中介模式例子可以在測(cè)試自動(dòng)框架(包含4個(gè)類,TC,TestManager,Reporter ,DB)中被證明。

1.TC類是測(cè)試的響應(yīng),借助方法setup(),execute(),tearDown()。
2.Reporter類調(diào)用

當(dāng)測(cè)試分類開始執(zhí)行時(shí),調(diào)用prepare方法。
當(dāng)測(cè)試分類完成執(zhí)行時(shí),調(diào)用report()方法 ,
框架的測(cè)試響應(yīng)就是好的幫助文檔。

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

代碼貼出來:

import timeclass 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 = valueclass 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 = tmclass 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 = tmclass 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 = tcif __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()            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大田县| 泗洪县| 西吉县| 门源| 琼中| 高密市| 乌拉特前旗| 松原市| 泾阳县| 门源| 门头沟区| 咸丰县| 二手房| 惠水县| 南溪县| 伊宁县| 康马县| 张家界市| 尤溪县| 汉源县| 军事| 虹口区| 麦盖提县| 盐边县| 九龙县| 治多县| 兴安盟| 台州市| 清水河县| 房产| 田东县| 丰都县| 凤凰县| 咸宁市| 江永县| 通江县| 水富县| 东乡族自治县| 板桥市| 兰坪| 汾西县|