Python設(shè)計(jì)模式之中介模式簡(jiǎn)單示例
本文實(shí)例講述了Python設(shè)計(jì)模式之中介模式。分享給大家供大家參考,具體如下:
Mediator Pattern:中介模式
中介模式提供了一系列統(tǒng)一的系統(tǒng)接口。此模式也被認(rèn)為是行為模式,因?yàn)樗?span style="color: #0000ff">能選擇程序處理流程。
當(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è)簡(jiǎn)單的中介模式例子:
一個(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 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()
運(yùn)行結(jié)果:

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- Python設(shè)計(jì)模式之享元模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之解釋器模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之迭代器模式原理與用法實(shí)例分析
- Python設(shè)計(jì)模式之MVC模式簡(jiǎn)單示例
- Python設(shè)計(jì)模式之命令模式簡(jiǎn)單示例
- Python設(shè)計(jì)模式之觀察者模式簡(jiǎn)單示例
- Python設(shè)計(jì)模式之門面模式簡(jiǎn)單示例
- Python設(shè)計(jì)模式之代理模式簡(jiǎn)單示例
- Python設(shè)計(jì)模式之工廠模式簡(jiǎn)單示例
- Python設(shè)計(jì)模式之職責(zé)鏈模式原理與用法實(shí)例分析
相關(guān)文章
Python爬取網(wǎng)站圖片并保存的實(shí)現(xiàn)示例
這篇文章主要介紹了Python爬取網(wǎng)站圖片并保存的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Python利用socket實(shí)現(xiàn)多進(jìn)程的端口掃描器
作為開發(fā)人員經(jīng)常需要查看服務(wù)的端口開啟狀態(tài)判斷服務(wù)是否宕機(jī)。特別是部署的服務(wù)比較多的情況下,可能存在幾個(gè)甚至幾十個(gè)服務(wù)端口的占用。所以本文將利用socket實(shí)現(xiàn)多進(jìn)程的端口掃描器,需要的可以參考一下2022-12-12
python web.py開發(fā)httpserver解決跨域問題實(shí)例解析
這篇文章主要介紹了python web.py開發(fā)httpserver解決跨域問題實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
python3.0 模擬用戶登錄,三次錯(cuò)誤鎖定的實(shí)例
下面小編就為大家?guī)硪黄猵ython3.0 模擬用戶登錄,三次錯(cuò)誤鎖定的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
15款Python編輯器的優(yōu)缺點(diǎn),別再問我“選什么編輯器”啦
這篇文章主要介紹了15款Python編輯器的優(yōu)缺點(diǎn),別再問我“選什么編輯器”啦,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-10-10
python中string模塊各屬性以及函數(shù)的用法介紹
下面小編就為大家?guī)硪黄猵ython中string模塊各屬性以及函數(shù)的用法介紹。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05

