- 簡介
用一個(gè)中介對象來封裝一系列的對象交互。中介者使各對象不需要顯示地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。
- 中介模式的缺點(diǎn)
- 中介者模式很容易在系統(tǒng)中應(yīng)用,也很容易在系統(tǒng)中誤用。當(dāng)系統(tǒng)出現(xiàn)了‘多對多’交互復(fù)雜的對象群,不能急于使用中介者模式。
- 中介者模式的優(yōu)點(diǎn)
- 具體中介者類控制了集中化,于是就把交互復(fù)雜性變味了中介者的復(fù)雜性,這就使得中介者會(huì)變得比任何一個(gè)中介類都復(fù)雜。
- 實(shí)例:
//中介基類
abstract class Mediator
{
public abstract void Send(string message,Colleague colleague);
}
//同事類
abstract class Colleague
{
protected Mediator mediator;
public Colleague(Mediator mediator){
this.mediator = mediator;
}
}
class ConcreteMediator : Mediator
{
private ConcreteColleague1 cooleague1;
private ConcreteColleague2 cooleague2;
public ConcreteColleague1 Colleague1
{
set{ Colleague1 = value; }
}
public ConcreteColleague2 Colleague2
{
set{ Colleague2 = value; }
}
public override void Send(stirng message,Colleague colleague){
if(colleague == Colleague1)
{
Colleague1.Notify(message);
}else{
Colleague2.Notify(message);
}
}
}
class ConcreteColleague1 :Colleague
{
public ConcreteColleague1 (Mediator mediator):base(mediator)
[
]
public void Send(string message)
{
mediator.Send(message,this);
}
public void Notify(string message)
{
Console.WriteLine("同事1得到的消息是:"+message);
}
}
class ConcreteColleague2 :Colleague
{
public ConcreteColleague2 (Mediator mediator):base(mediator)
[
]
public void Send(string message)
{
mediator.Send(message,this);
}
public void Notify(string message)
{
Console.WriteLine("同事2得到的消息是:"+message);
}
}
static void Main(string[] args){
//創(chuàng)建中介類
ConcreteMediator M = new ConcreteMediator();
//
ConcreteColleague1 c1 = new ConcreteColleague1(m);
ConcreteColleague2 c1 = new ConcreteColleague2(m);
m.Colleague1 = c1;
m.Colleague2 = c2;
c1.Send("message1");
c2.Send("message2");
Console.Read();
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。