至少半個多月的樣子沒寫部落格了,月初去了趟黃山,賞了美景,自然沒時間也沒條件敲部落格了,乙個多星期就這麼過去了。返回深圳後,工作積壓了一堆,然後白天就馬不停蹄的忙工作,晚上回家伺候小娃,又想早點休息,那是沒時間開機的。大頭小頭的工作也忙了一輪,第二輪還沒開始,這點空隙就是珍貴的部落格時間。做it這個行業,不管是開發還是測試,都不敢怠慢,知識更新太快,所以幾天不學,心裡就發慌。我們能靠的人不多,選擇靠自己是最靠譜的事。所以有點時間我就寫部落格。
假設現在科技發達之後,家裡所有裝置都是智慧型化的。
而小明在家洗澡的時候有個習慣就是喜歡聽歌,而且洗澡時候還要把窗簾拉上。
因此就有這種情形,小明要拉窗簾可能就是要洗澡,當然也要聽歌。
因此我們希望小明家的洗浴裝置,音響裝置和窗簾裝置都能協同合作,不管操作哪種裝置,其他兩種裝置都有一定響應。
以此寫出程式。
這個程式最主要的功能就是在 乙個類裡完成了對另外兩個類的方法作用。
但是這樣設計有兩個主要缺陷(其實是物件之間耦合度過高而引起的)一旦窗簾裝置壞掉,需要更換,那樣我們就要讓新的窗簾裝置建立別的裝置的連線,這樣會很麻煩
如果我們又有別的需求,比如洗澡的時候要把門鎖住,那門鎖的智慧型裝置又要關聯所有裝置,更加麻煩。
引入中介者
中介者模式的引入則極大的彌補了上述程式的兩個缺陷,物件互動如下圖
其實中介者就好比智慧型家居的管家,這樣所有物件的互動指令都通過它來傳達,這樣這個中介者負責與物件之間聯絡,物件與物件之間不再進行直接的互動,也就是對物件關係 進行解耦。
#中介者模式(mediator)定義
用乙個中介物件來封裝一系列的物件互動中介者使得=各物件不需要顯示的相互引用,從而使其松耦合,而且可以獨立地改變他們之間的互動。
#中介者模式應用場景
當有多個物件彼此間相互互動的時候,自然就會想到物件間的耦合度過高,解決辦法就是封裝物件間的互動行為,因此就能想到中介者模式就是幹這行的。
通過讓物件彼此解耦,增加物件的復用性
通過將控制邏輯集中,可以簡化系統維護
通過中介者使一對所變成了一堆一,便於理解
如果涉及不好,引入中介者會使程式變的複雜
中介者承擔過多責任,是中心化模式,若中介者出現了問題,整個系統將會崩潰
#抽象中介者class mediator:
def __init__(self,comp,name):
self.name=name
self.comp=comp
def send(self,message,clooeague):
pass
#抽象同事類
class colleague:
mediator=none
def __init__(self,mediator):
self.mediator=mediator
#具體同事類1
class concretecolleaguea(colleague): #房東
def zhaozu(mediator,name,address,area,price):
fdm='你好,我是房東,我的房子在,面積是,租金是'.format(name,address,area,price)
return fdm
#具體同事類1
class concretecolleagueb(colleague): #租客
def qiuzu(mediator,name,address,area,price):
zkm='你好,我是租客,我的想租的房子大概在,面積大概是,租金大概是'.format(name,address,area,price)
return zkm
#具體中介類
class concretemediator(mediator):
fd=''
zk=''
def introself(self,comp,name):
print('您好,我是公司的,以後我來為您找到合適的房子或合適的租客'.format(comp,name))
print('*************************')
def __init__(self,name):
self.name=name
def send(self,name,message):
if self.name=='fd':
print('房東你好,已收到你的放租訊息,我馬上聯絡租客')
print('zk 你好,房東的訊息是: %s' % message)
else:
print('租客你好,已收到你的求租訊息,我馬上聯絡房東')
print('fd 你好,租客的訊息是: %s' % message)
參考
設計模式之中介者模式
1 抽象中介者,mediator 抽象中介 author jin.li public abstract class mediator2 具體的中介者,主機板 主機板中介 author jin.li public class mainboard extends mediator if colleagu...
設計模式之中介者模式
中介者模式 假如沒有總經理,下面六個個部門,財務部 市場部 研發部,財務部要發工資,讓大家核對公司需要跟市場部和研發部都通氣,市場部要接個新專案,需要研發部門處理技術,需要財務部出資金,市場部跟各個部門打交道,雖然只有六個個部門,但是關係非常亂 實際上,公司有總經理,各個部門有什麼事情都通報給總結裡...
設計模式之中介者模式
嘮叨幾句 設計模式的案例我已經寫過大部分的案例,但是本人沒有經常寫部落格的習慣,最近在將本人之前在碼雲上的案例直接搬過來 個人感覺容易和外觀模式弄混,所以在這裡做下簡單的比較 外觀模式 本質封裝互動,組合呼叫。就是向外部提供一組功能,但是具體的實現比較複雜,內部有喝多的元件相互組合呼叫,強調的是外觀...