中介者模式

2022-08-27 23:48:07 字數 1888 閱讀 5967

一、簡介

1. 定義

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

2. 應用場景

適用於系統中大量的物件需要相互的依賴,並且彼此間的依賴關係複雜混亂,此時在重構過程中,可以用乙個中間類來管理這些物件之間的依賴關係。

3.優缺點

優點:將多個互相依賴的類進行解耦,使得這些有互動的物件松耦合;

增加互動物件時,只需要在中介類中進行修改即可,不需要變動其他的物件實現;

缺點:中介類可能會變得複雜,甚至會發展到功能龐大,違反類的單一職責。

4. 類圖

二、 **示例

1. 場景簡介

在組隊槍戰遊戲中,突擊小隊需要通過通訊裝置來完成戰術的安排與實施,隊長主要負責下達命令,隊員根據戰況請求支援。

#ifndef mediator_h

#define mediator_h#include

#include

#include

class

imediator;

class

iuser

;

virtual ~iuser() {};

inline qstring name() ;

virtual

void send(qstring msg, imediator *mediator) = 0

;

virtual

void notify(qstring msg) = 0

;private

: qstring m_name;

};class

imediator

;

virtual ~imediator() {};

virtual

void registeuser(iuser *user)

};virtual

void unregisteruser(iuser *user)

;virtual

void sendmsg(qstring msg, iuser *sender) = 0

;protected

: qmap

m_usermap;

};class gamemediator : public

imediator

;

virtual ~gamemediator() {};

virtual

void sendmsg(qstring msg, iuser *sender)}};

};class userimp : public

iuser

;

virtual ~userimp() {};

virtual

void send(qstring msg, imediator *mediator)

};virtual

void

notify(qstring msg)

;};#if 1

#define free_obj(obj) if (nullptr != (obj))

void

main()

#endif//1

#endif

//!mediator_h

中介者模式

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

中介者模式

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

中介者模式

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