設計模式 中介者模式Mediator

2021-09-08 06:01:36 字數 3664 閱讀 4508

前言:【模式總覽】——————————by xingoo

使用乙個中介的物件,封裝一組物件之間的互動,這樣這些物件就可以不用彼此耦合。

這個中介者常常起著中間橋梁的作用,使其他的物件可以利用中介者完成某些行為活動,因此它必須對所有的參與活動的物件瞭如指掌!

1 當一組物件要進行溝通或者業務上的互動,但是其關係卻又很複雜混亂時,可以採用此模式。

2 當乙個物件與其他的物件要進行緊密的互動,但又想服用該物件而不依賴其他的物件時。

3 想創造乙個執行於多個類之間的物件,又不想生成新的子類時。

mediator抽象的中介者,定義中介的規範

inte***ce

mediator

concretemediator具體的中介者,通常內部依賴於多個業務物件

class

concretemediator implements mediator

public

void

createconcretemediator()

private

colleague1 getcol1()

public

colleague2 getcol2()

}

colleague抽象的業務角色

abstract

class

colleague

public

mediator getmediator()

public

abstract

void

action();

public

void

change()

}

colleague1 colleague2具體的業務角色

class

colleague1 extends colleague

public

void

action()

}class

colleague2 extends colleague

public

void

action()

}

全部**

1

package com.xingoo.test.design.mediator;

2abstract

class

colleague89

public

mediator getmediator()

1213

public

abstract

void

action();

1415

public

void

change()18}

19class

colleague1 extends colleague

23public

void

action()26}

27class

colleague2 extends colleague

31public

void

action()34}

35inte***ce

mediator

38class

concretemediator implements mediator

4647

public

void

createconcretemediator()

5152

private

colleague1 getcol1()

5556

public

colleague2 getcol2()

5960}61

62public

class

client

70 }

view code

執行結果

畢業的同學們,第乙個要解決的問題就是租房子,當白富美高富帥出沒社會後,窮屌絲沒了生存之地。但是只要勤勞,一樣有飯吃有房住!

這裡房屋中介好比是乙個中介者,它知道每個租客的身份資訊,當有房屋出租後,它會傳送給每乙個租客訊息。

這樣,租客們中有乙個變化活動時,都會利用房屋中介,傳送訊息到其他的租客。下面就是模仿的乙個過程。

房屋中介**如下:

1

inte***ce

statemediator

4class

realestateagents implements statemediatorelse

if(tenant instanceof tenantb)else

if(tenant instanceof tenantc)21}

2223

public

void

createagents()

28 }

租客的**如下:

1

abstract

class

tenant

6public

abstract

void

crying();

7public

void

renting()10}

11class

tenanta extends tenant

15public

void

crying() 18}

19class

tenantb extends tenant

23public

void

crying() 26}

27class

tenantc extends tenant

31public

void

crying()

34 }

產生的業務活動如下:

1

public

class

clienttest

12 }

執行結果

tea 搶到了房子了!

海景洋房 已經租出去了!

我是白富美 tenantb!哎呀我想要!

我是窮屌絲 tenantc!哎呀我想要!

過了兩個月 teb 搶到了房子了!

海景洋房 已經租出去了!

我是高富帥 tenanta!哎呀我想要!

我是窮屌絲 tenantc!哎呀我想要!

posted @

2014-11-07 22:09

xingoo 閱讀(

...)

編輯收藏

設計模式 中介者模式

假如沒有總經理,下面三個部門 財務部,市場部,研發部。財務部要發工資,讓大家核對公司需要跟市場部和研發部都通氣 市場部要接新專案,需要研發部處理技術 需要財務部出資金。市場部跟各個部門打交道。雖然只有三個部門,但是關係非常亂。實際上,公司都有總經理。各個部門有什麼事情都通報到總經理這裡,總經理再通知...

設計模式 中介者模式

在我們的日常生活中經常需要購買各種各樣的東西,房子 車子 生活用品等等。那麼我們並不會對各個產品都了解,所以銷售人員應運而生,他們了解產品,然後他們根據你的需求在向你們推薦符合你們要求的產品。這些銷售人員就相當於中介,處於客戶和產品之間,為你們搭橋牽線。這就是這篇需要講述的乙個設計模式 中介者模式。...

設計模式 中介者模式

在學習這個模式之前,我們先來回顧一下乙個物件導向的設計原則 迪公尺特原則,這個原則告訴我們 乙個物件盡可能少跟其他物件進行關聯,就像乙個人要少跟陌生人說話一樣。而中介者模式,也正是為了協調多個物件之間複雜的引用關係。我們來看乙個例子,雖然這個例子不太好,後期想個好一點的例子再改。在中介者模式中,主要...