各個物件之間相互引用,緊耦合體現的淋漓盡致,如果此時需要發生變化,那麼改**就糟糕了,因為無法修改。
如果我們使用乙個中介者來完成物件之間的互動,那麼看起來明朗多了,每個物件只需要與中介者產生聯絡,將請求通過中介者發給接收物件,這有點像依賴倒轉原則,這樣不但看起來清晰,以後再修改邏輯的時候將會十分的方便與輕鬆。這就是中介者模式!
適用性:
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 角色...