最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

Mediator Pattern:中介模式

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

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

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

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

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

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

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

當測試分類開始執(zhí)行時,調(diào)用prepare方法。
當測試分類完成執(zhí)行時,調(diào)用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)
      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é)果:

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

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

相關文章

  • Python爬取網(wǎng)站圖片并保存的實現(xiàn)示例

    Python爬取網(wǎng)站圖片并保存的實現(xiàn)示例

    這篇文章主要介紹了Python爬取網(wǎng)站圖片并保存的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • PyGraphviz 安裝使用及注意事項

    PyGraphviz 安裝使用及注意事項

    PyGraphviz 是對 Graphviz 的封裝,提供了 Python 接口的調(diào)用,這篇文章主要介紹了PyGraphviz 安裝使用,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Python利用socket實現(xiàn)多進程的端口掃描器

    Python利用socket實現(xiàn)多進程的端口掃描器

    作為開發(fā)人員經(jīng)常需要查看服務的端口開啟狀態(tài)判斷服務是否宕機。特別是部署的服務比較多的情況下,可能存在幾個甚至幾十個服務端口的占用。所以本文將利用socket實現(xiàn)多進程的端口掃描器,需要的可以參考一下
    2022-12-12
  • python web.py開發(fā)httpserver解決跨域問題實例解析

    python web.py開發(fā)httpserver解決跨域問題實例解析

    這篇文章主要介紹了python web.py開發(fā)httpserver解決跨域問題實例解析,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • python3.0 模擬用戶登錄,三次錯誤鎖定的實例

    python3.0 模擬用戶登錄,三次錯誤鎖定的實例

    下面小編就為大家?guī)硪黄猵ython3.0 模擬用戶登錄,三次錯誤鎖定的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 15款Python編輯器的優(yōu)缺點,別再問我“選什么編輯器”啦

    15款Python編輯器的優(yōu)缺點,別再問我“選什么編輯器”啦

    這篇文章主要介紹了15款Python編輯器的優(yōu)缺點,別再問我“選什么編輯器”啦,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2020-10-10
  • python os.fork() 循環(huán)輸出方法

    python os.fork() 循環(huán)輸出方法

    今天小編就為大家分享一篇python os.fork() 循環(huán)輸出方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python中如何以空格為分割符,給列表賦予數(shù)值

    python中如何以空格為分割符,給列表賦予數(shù)值

    這篇文章主要介紹了python中如何以空格為分割符,給列表賦予數(shù)值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Scrapy之迭代爬取網(wǎng)頁中失效問題及解決

    Scrapy之迭代爬取網(wǎng)頁中失效問題及解決

    這篇文章主要介紹了Scrapy之迭代爬取網(wǎng)頁中失效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python中string模塊各屬性以及函數(shù)的用法介紹

    python中string模塊各屬性以及函數(shù)的用法介紹

    下面小編就為大家?guī)硪黄猵ython中string模塊各屬性以及函數(shù)的用法介紹。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05

最新評論

南召县| 鄂伦春自治旗| 酒泉市| 土默特左旗| 嘉禾县| 甘南县| 宁远县| 蓬安县| 新蔡县| 航空| 黄山市| 雷州市| 密云县| 卓资县| 敦煌市| 临高县| 阳春市| 额尔古纳市| 鄄城县| 松溪县| 清流县| 香港 | 乌拉特后旗| 秦皇岛市| 叙永县| 常德市| 颍上县| 墨脱县| 安宁市| 汝城县| 洛扎县| 吉水县| 承德县| 射洪县| 永安市| 绵竹市| 边坝县| 莒南县| 赤城县| 来宾市| 阜平县|