設計模式之Mediator

2021-08-21 12:30:51 字數 971 閱讀 4724

mediator翻譯為仲裁者,常用於圖形程式設計中,有多個同事類相互狀態依賴的場景.使用仲裁者模式可以解耦各個同事類間的互動等依賴.

mediator模式是把同事類間的互動邏輯統一放到mediator類中進行統一管理,把各個同事類的狀態管理放在mediator中,操作同事類後狀態切換時,同事類通過上報更新的狀態給mediator進行決策,更新對應的其他同事類.

由於mediator中需要控制同事類的狀態切換,可以通過在concretemediator中聚合各個同事類concretecolleage;同時,concretecolleage內部狀態變化時,需要上報狀態給mediator,所以concretecolleage中聚合有mediator的物件.

uml圖:

mediator介面主要提供createcolleage和colleagechanged介面.

在createcolleage中建立concreatecolleage等多個同事類,並且在colleagechanged中實現業務邏輯,並控制各個子同事類的狀態.

colleage中儲存mediator物件,提供controlcolleage方法,供mediator.colleagechanged呼叫.

同事類實現,這裡只列出了controlcolleage方法,內部應該還有同事類的內部狀態等.在controlcolleage中會修改同事類的內部狀態,比如修改為唯讀,修改背景顏色等.

在state模式中,每個狀態是乙個concretestate類,狀態變化是通過修改聚合的物件實現的,由於狀態物件經常重新賦值,一般concretestate可以使用單例實現.mediator模式中,colleage同事類一般會有多個,各個之間會有相互以來,通過mediator統一管理.

設計模式之 mediator

中介者?這個名字沒完全表達本身的含義,這個應該是調停者或者叫仲裁者,都比中介者強。啥個意思?就是多個物件相互影響,為了好控制,好管理,把互動的邏輯全部交到仲裁者那去做,這就是 mediator的中心思想。再舉那個bt的vadialg為例,涉及到太多的互動了,換乙個list導致介面很多元素都得換,所以...

JAVA設計模式之Mediator模式

現實生活中,有很多實際的現象,比如,房產中介,購房者可以不去一家家房產商去跑,去聯絡,而可以通過房產中介來獲取房產商的資訊,同樣的房產商也不用自己聯絡顧客,而是通過中介來完成。同樣的,在乙個大公司裡,如果讓每個同事直接交流,則這樣的效率顯然很低下,因為每個員工可能需要維護很多個同事的資訊。這時,可以...

設計模式之Mediator 中介者

mediator中介者模式定義 用乙個中介物件來封裝一系列關於物件互動行為.為何使用mediator?各個物件之間的互動操作非常多 每個物件的行為操作都依賴彼此對方,修改乙個物件的行為,同時會涉及到修改很多其他物件的行為,如果使用mediator模式,可以使各個物件間的耦合鬆散,只需關心和 medi...