中介者模式

2022-03-13 07:22:41 字數 1446 閱讀 3972

當類的關係圖呈現網狀結構的時候,這時可以考慮使用使用中介者模式,它能夠將這種網狀結構的類關係轉化為星型結構,降低了類與類之間的耦合度。

mediator:抽象中介者,定義同一介面,用於各同事角色之間的通訊

concretemediator:具體中介角色,協調各同事角色實現協作行為

colleague:每個同事角色都知道中介者角色,並且與其他同時角色進行通訊的時候一定要通過中介者角色協作。每個同事類有兩種行為:自發行為(自行完成,不依賴他人),依賴方法(需要借助中介者才能完成)

通用抽象中介者

這裡將具體的同事類而不將抽象同事類進行注入,是因為每個同事類幹的活是不一樣的

public

abstract

class

mediator

public

void

setc1(concretecolleague1 _c1)

public

concretecolleague2 getc2()

public

void

setc2(concretecolleague2 _c2)

public

abstract

void

dosomething1();

public

abstract

void

dosomething2();

}

具體中介者

在具體中介者中根據業務來呼叫不同的同事類進行處理

public

class concretemediator extends

mediator

@override

public

void

dosomething2()

}

抽象同事類

抽象同事類中需要持有中介的引用,是因為自己幹不了的事可以提交給中介來處理

public

abstract

class

colleague

}

具體同事類

public

class concretecolleague1 extends

colleague

//自由方法self-method

public

void

selfmethod1()

//依賴方法dep-method

public

void

depmethod1()

}

優點:減少類之間的相互依賴,從一對多變為一對一

缺點:關係越複雜會導致的中介者膨脹越厲害,比如dosomething的實現就更加苦難。所以使用中介者模式需要量力而行。

中介者模式

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

中介者模式

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

中介者模式

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