今天,我們來學習下中介者模式,所謂中介者模式,就是充當乙個中間人的角色,讓兩種不同領域的人溝通;把這句話轉換為軟體角色就是讓有交集的兩個類變得沒有任何關係。沒有關係就表明了兩個類之間的耦合度為零,這就是我們需要的最終奧義,也是中介者模式要達到的目的。
首先第一步,抽象乙個中介者,這個中介者就幹一件事,傳遞資訊,所以,**如下
abstractmediator類就是我們抽象的乙個中介者類,它有乙個send方法,方法引數有兩個,乙個message和乙個colleague,我們想一下,乙個中介者是如何傳遞訊息的,首先,它得到乙個需要傳遞訊息的人,然後把這個人的訊息傳遞給更多的人,所以,這裡的colleague型別就是我們抽象出來的人的類class
mediator
abstract上面就是我們抽象的colleague類,人當然需要中介者才能完成它想要完成的任務,所以,這裡就是通過建構函式注入的方式獲取乙個中介者。好了,所有的抽象都已完成,接下來我們就來實現他們吧class
colleague
}
首先,我們先實現兩個同事類吧
classconcretecolleague1類和concretecolleague2類就是我們實現的同事類,他們都繼承colleague類,到了這裡可能會有點蒙,我們來梳理一下,首先是send方法,這裡是在做什麼事呢?我們看到它的內部是呼叫了send方法,這個send方法就是我們抽象的中介者的send方法,然後把訊息和自身傳遞給中介者,供中介者使用,然後notify方法就是輸入自身的互動資訊。接下來,我們要實現中介者抽象了,我們需要乙個具體的中介者來幫忙做事。concretecolleague1 : colleague
public
void send(string
message)
public
void notify(string
message)
}class
concretecolleague2 : colleague
public
void send(string
message)
public
void notify(string
message)
}
class我們可以看到,concretemediator類中有兩個屬性和乙個方法,根據我們生活的常識來說,乙個具體的中介者,是不是需要認識雙發需要交流的人,所以這裡我們也需要獲取concretecolleague1和concretecolleague2,然後重寫父類mediator的send方法,到這裡我們的中介者模式所以骨架就都完成了,接下來,讓我們來看看如何使用它。concretemediator : mediator
}public
concretecolleague2 colleague2
}public
override
void send(string
message, colleague colleague)
}
class首先,第一步,我們先new乙個中介者出來,然後再new兩位同事出來,我們new出來的這兩位同事肯定是要和中介者認識啊(所以new需要乙個中介者物件m),然後他們都會各自去找我們的中介者(把自身物件傳遞給中介者),最後,他們就可以傳送訊息通訊了,我們看執行結果program
}
本來兩個不相干的類,通過中介者模式可以實現互動,這是多麼的神奇啊是吧。
官方說明中介者模式概述:可以把系統的網狀結構變成以中介者為中心的星型結構。這樣轉變的好處就是保證了物件結構上的穩定,系統的結構不會因為引入新物件而帶來大量的修改工作。
中介設計模式
中介者模式 mediator pattern 是用來降低多個物件和類之間的通訊複雜性。這種模式提供了乙個中介類,該類通常處理不同類之間的通訊,並支援松耦合,使 易於維護。中介者模式屬於行為型模式。優點 1 降低了類的複雜度,將一對多轉化成了一對一。2 各個類之間的解耦。3 符合迪公尺特原則。缺點 中...
設計模式 中介者模式
假如沒有總經理,下面三個部門 財務部,市場部,研發部。財務部要發工資,讓大家核對公司需要跟市場部和研發部都通氣 市場部要接新專案,需要研發部處理技術 需要財務部出資金。市場部跟各個部門打交道。雖然只有三個部門,但是關係非常亂。實際上,公司都有總經理。各個部門有什麼事情都通報到總經理這裡,總經理再通知...
設計模式 中介者模式
在我們的日常生活中經常需要購買各種各樣的東西,房子 車子 生活用品等等。那麼我們並不會對各個產品都了解,所以銷售人員應運而生,他們了解產品,然後他們根據你的需求在向你們推薦符合你們要求的產品。這些銷售人員就相當於中介,處於客戶和產品之間,為你們搭橋牽線。這就是這篇需要講述的乙個設計模式 中介者模式。...