中介者模式

2022-08-22 15:33:09 字數 2598 閱讀 1421

介紹:

中介者模式(mediator pattern)是用來降低多個物件和類之間的通訊複雜性。這種模式提供了乙個中介類,該類通常處理不同類之間的通訊,並支援松耦合,使**易於維護。中介者模式屬於行為型模式。

定義:

用乙個中介物件來封裝一系列的物件互動,中介者使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。

結構圖:

**:

//mediator類,抽象中介者類

class mediator

//colleague類,抽象同事類

class colleague

//傳送訊息是通過中介者

void send(const string&message

)

void notify(const string&message

) = 0;//接到訊息的處理需要各個具體同事自己實現

}

//concretemediator類,具體中介者類

class concretemediator : mediator

else

}

}

//具體同事類

class concretecolleaguea :

colleague

//接到訊息的具體處理

void notify(const string&message

)

}

class concretecolleagueb :

colleague

//接到訊息的具體處理

void notify(const string&message

)

}

//客戶端

mediator m = new concretemediator()//建立乙個中介者

colleague

a = new concretecolleaguea

(m)//建立乙個同事a並讓他認識中介者

colleague

b = new concretecolleagueb

(b)//建立乙個同事b並讓他認識中介者 

m.m_cconcretecolleaguea = a;//讓中介者認識a

m.m_cconcretecolleagueb = b;//讓中介者認識b

a.send("hello");//a通過中介者傳送hello給b

a.send("nice to meet you");//b接到a的hello,並向a發乙個很高興見到你。

使用時機:

一組定義良好的物件,現在要進行複雜的相互通訊。或者想通過乙個中間類來封裝多個類中的行為,而又不想生成太多的子類。

優點:

1、簡化了物件之間的關係,將系統的各個物件之間的相互關係進行封裝,將各個同事類解耦,使得系統變為松耦合。

2、提供系統的靈活性,使得各個同事物件獨立而易於復用。

缺點:

1、中介者模式中,把互動複雜性變成了中介者的複雜性,這就使得中介者比任何乙個通訊物件都複雜。

2、新增加乙個同事類時,不得不去修改抽象中介者類和具體中介者類,此時可以使用觀察者模式和狀態模式來解決這個問題。

中介者模式

1.中間 類 namespace intermediarypattern 成員物件需要知道是哪個中介者在通知它事情 public abstract class member 各成員間要傳送訊息 public abstract void send string msg 這個方法其實是具體實施發訊息的 ...

中介者模式

中介者模式就是在物件之間的關係很複雜時用,名如其人,就像租房的黑中介一樣,如果每個房東都拿著很多租房者的資訊很麻煩,每個租房者都要拿著很多房東的資訊也麻煩,所以需要乙個中介來拿著這些資訊,租房者只需要發出租房的請求,中介會給你介紹合適的房東,房東只需要提交房屋資料就等著中介的人帶著訪客看房拿錢就行了...

中介者模式

中介者模式 mediator pattern 1 抽象中介者 mediator 角色 抽象中介者角色定義統一的介面用於各同事角色之間的通訊。具體中介者 concrete mediator 角色 具體中介者角色通過協調各同事角色實現協作行為,因此它必須依賴於各個同事角色。同事 colleague 角色...