如果我們想讓兩個物件之間進行通訊,一種方法是讓物件互相持有對方的引用,在需要的時候將訊息通過引用傳遞給對方,這種方式在需要通訊的物件不多的時候不會有問題,當通訊的物件數目增多時,乙個物件持有的引用就會非常多,為了克服這種問題,就用乙個類(中介者)專門負責物件之間的互動,所有的物件都通過中介者進行通訊
mediator:抽象中介者角色,需要定義物件互動資訊的方法
concretemediator:具體中介者角色,實現具體的互動資訊的方法
colleague:抽象同事類角色,定義向中介者提交請求的介面
concretecolleague1、concretecolleague2:具體同事類角色,繼承於抽象同事類
例項:a與b之間進行實時通訊
mediator:
public abstract class mediator
public abstract void notifya(string message);
public abstract void notifyb(string message);
}
user(colleague):
public abstract class user
user_a:
public class user_a extends user
public void recivemessage(string message)
public void sendmessage(string message)
}
user_b:
public class user_b extends user
@override
public void sendmessage(string message)
@override
public void setmediator(mediator mediator)
}
concretemediator:
public class concretemediator extends mediator
@override
public void notifya(string message)
@override
public void notifyb(string message)
}
main:
public class main
}
效果圖:
中介者模式使物件之間是松耦合的,當物件與物件之間的關係比較混亂的時候才使用中介者模式,當物件多起來後,中介者本身的**量可能會變得非常巨大,在構造中介者模式時,需要注意一點,因為具體同事類持有抽象中介者類的應用,抽象中介者持有同事類的引用,所以不要在建構函式中初始化引用,這樣會陷入無法初始化乙個類的尷尬情況(就和spring中的迴圈注入一樣)
設計模式 中介者模式
假如沒有總經理,下面三個部門 財務部,市場部,研發部。財務部要發工資,讓大家核對公司需要跟市場部和研發部都通氣 市場部要接新專案,需要研發部處理技術 需要財務部出資金。市場部跟各個部門打交道。雖然只有三個部門,但是關係非常亂。實際上,公司都有總經理。各個部門有什麼事情都通報到總經理這裡,總經理再通知...
設計模式 中介者模式
在我們的日常生活中經常需要購買各種各樣的東西,房子 車子 生活用品等等。那麼我們並不會對各個產品都了解,所以銷售人員應運而生,他們了解產品,然後他們根據你的需求在向你們推薦符合你們要求的產品。這些銷售人員就相當於中介,處於客戶和產品之間,為你們搭橋牽線。這就是這篇需要講述的乙個設計模式 中介者模式。...
設計模式 中介者模式
在學習這個模式之前,我們先來回顧一下乙個物件導向的設計原則 迪公尺特原則,這個原則告訴我們 乙個物件盡可能少跟其他物件進行關聯,就像乙個人要少跟陌生人說話一樣。而中介者模式,也正是為了協調多個物件之間複雜的引用關係。我們來看乙個例子,雖然這個例子不太好,後期想個好一點的例子再改。在中介者模式中,主要...