欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年01月09日 10:30:32   作者:李自泰  
這篇文章主要介紹了Python設(shè)計模式之中介模式,簡單介紹了中介模式的概念、功能,并結(jié)合實例形式給出了Python定義與使用中介模式的相關(guān)操作技巧,需要的朋友可以參考下

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

Mediator Pattern:中介模式

中介模式提供了一系列統(tǒng)一的系統(tǒng)接口。此模式也被認為是行為模式,因為他能選擇程序處理流程。

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

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

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

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

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

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

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

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

代碼貼出來:

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)
      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 = value
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
class 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 = 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()

運行結(jié)果:

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • 詳解Python如何使用Falcon構(gòu)建?API

    詳解Python如何使用Falcon構(gòu)建?API

    Falcon?是一個Python?的?Web?框架,專注于為構(gòu)建?API?提供一個極其輕量級、超全面的性能平臺,下面小編就來為大家詳細介紹一下Python如何使用Falcon構(gòu)建?API吧
    2023-11-11
  • Python3.9環(huán)境搭建RobotFramework的詳細過程

    Python3.9環(huán)境搭建RobotFramework的詳細過程

    Robot Framework是一個基于Python的,可擴展的關(guān)鍵字驅(qū)動的測試自動化框架,用于端到端驗收測試和驗收測試驅(qū)動開發(fā)(ATDD),這篇文章主要介紹了Python3.9環(huán)境搭建RobotFramework的詳細過程,需要的朋友可以參考下
    2023-01-01
  • Python基于numpy模塊實現(xiàn)回歸預(yù)測

    Python基于numpy模塊實現(xiàn)回歸預(yù)測

    這篇文章主要介紹了Python基于numpy模塊實現(xiàn)回歸預(yù)測,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • 使用apidocJs快速生成在線文檔的實例講解

    使用apidocJs快速生成在線文檔的實例講解

    下面小編就為大家分享一篇使用apidocJs快速生成在線文檔的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Flask表單與表單驗證實現(xiàn)流程介紹

    Flask表單與表單驗證實現(xiàn)流程介紹

    這篇文章主要介紹了python中Flask?Web?表單的使用方法介紹,表單的操作是Web程序開發(fā)中最核心的模塊之一,絕大多數(shù)的動態(tài)交互功能都是通過表單的形式實現(xiàn)的。更多介紹需要的小伙伴可以參考下面文章內(nèi)容
    2022-09-09
  • python繪制直方圖的方法

    python繪制直方圖的方法

    這篇文章主要為大家詳細介紹了python繪制直方圖的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Django自定義用戶表+自定義admin后臺中的字段實例

    Django自定義用戶表+自定義admin后臺中的字段實例

    今天小編就為大家分享一篇Django自定義用戶表+自定義admin后臺中的字段實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Django Sitemap 站點地圖的實現(xiàn)方法

    Django Sitemap 站點地圖的實現(xiàn)方法

    這篇文章主要介紹了Django Sitemap 站點地圖的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解Python中l(wèi)ist[::-1]的幾種用法

    詳解Python中l(wèi)ist[::-1]的幾種用法

    這篇文章主要介紹了詳解Python中l(wèi)ist[::-1]的幾種用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python實現(xiàn)指定ip端口掃描方式

    python實現(xiàn)指定ip端口掃描方式

    今天小編就為大家分享一篇python實現(xiàn)指定ip端口掃描方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論