中介者模式

2022-03-25 21:28:14 字數 1991 閱讀 8253

各個物件之間相互引用,緊耦合體現的淋漓盡致,如果此時需要發生變化,那麼改**就糟糕了,因為無法修改。

如果我們使用乙個中介者來完成物件之間的互動,那麼看起來明朗多了,每個物件只需要與中介者產生聯絡,將請求通過中介者發給接收物件,這有點像依賴倒轉原則,這樣不但看起來清晰,以後再修改邏輯的時候將會十分的方便與輕鬆。這就是中介者模式!

適用性:

1.一組物件已經定義良好但是複雜的方式進行通訊。產生的相互依賴關係結構混亂且難以理解。

2.乙個物件引用其他很多物件並且直接與這些物件通訊,導致難以復用該物件。

3.想定製乙個分布在多個類中的行為,而又不想生成太多的子類。

每個物件可以接收指定物件的訊息,也可以給指定的物件傳送訊息

中介者可以指定某個物件給另乙個物件傳送某些訊息

#region 抽象中介者

abstract

class

abstractchatroom

#endregion

#region 具體中介者

class

chatroom : abstractchatroom

public

override

void

register(participant participant)

participant.chatroom = this;//

註冊該例項內部的中間者為此中介者,這個是重點

}

public

override

void send(string

from, string to, string

message)}}

#endregion

#region 物件成員基類

class

participant

public

string name

public participant(string

name)

public

void send(string to,string

message)

public

virtual

void receive(string

from,string

message)

to :''

", from

, name, message);}}

#endregion

#region 具體成員類

上述案例,體現了中介者中,雖然物件可以接收也可以傳送,也可以通過中介者來實資訊傳遞,如果每個地方都寫一次邏輯的話,那麼將使得**十分混亂與複雜,巧妙的使用**, 讓所有邏輯寫在傳送或者接收裡(不論使用接收還是傳送,使用哪個,就需要在基類中定義該方法為虛方法,這樣轉過來的時候才會觸發真正覆蓋的例項方法)

這就是中介者模式嘍!

中介者模式

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

中介者模式

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

中介者模式

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