設計模式漫談之中介者模式

2022-07-17 04:27:13 字數 1592 閱讀 1304

天太熱,失眠了,實在睡不下去,就再寫篇文章來靜靜心吧,我為什麼寫設計模式,因為設計模式是思想上的東西,程式設計師的法寶之一就是程式設計思想。

在物件導向中,物件之間的認識是分角度的,比如a物件,b物件,如果a物件存了b物件的引用,那麼從a物件的角度來說,a物件認識b物件,但是b物件不認識a物件,如果b物件也存了a物件的引用,這時,才能說a,b互相認識。

或者是a,b物件互相不認識,但是a,b物件都認識c物件,而c物件認識a,b物件,這樣,可以通過c物件來間接讓a,b物件互相認識,互相通訊。扮演紅娘角色,即中介角色。

物件之間的認識分區域性,比如在物件的整個生命中期都認識的物件(父母),或者是過客,我只在某個時間(時間即空間)認識的物件(某個旅遊景點認識的驢友)。

比如種種原因,兩個物件不想直接發生關係,就找乙個中間人傳話。

直接上例子,我來解釋:

//抽象物件unitednations在方法中認識country 

abstract class unitednations

//具體物件認識usa, iraq 這兩個物件在方法中認識country這個物件

class unitednationssecuritycouncil : unitednations

}public iraq colleague2

}public override void declare(string message, country colleague)

else}}

//抽象物件認識unitednations 這個物件

abstract class country

}//具體物件usa在整個生命週期中都認識mediator這個物件

class usa : country

public void declare(string message)

public void getmessage(string message)

}//具體物件在整個生命中期都認識mediator

class iraq : country

public void declare(string message)

public void getmessage(string message)

/具體的中介物件

unitednationssecuritycouncil unsc = new unitednationssecuritycouncil();

//c1 物件認識中介者

usa c1 = new usa(unsc);

//c2物件也認識中介者

iraq c2 = new iraq(unsc);

//中介者認識c1,c2兩個物件

unsc.colleague1 = c1;

unsc.colleague2 = c2;

//c1說話,讓中介者傳話

c1.declare("不准研製核**,否則要發動戰爭!");

//同樣c2發訊息也是讓中介者傳話

c2.declare("我們沒有核**,也不怕侵略。");

總結,物件之間的認識關係分區域性,在哲學中,區域性相當於時間性,物件認識另乙個物件,必須可以訪問另乙個物件的空間,即另乙個物件的引用。

老生常談,程式設計的法寶之一就是程式設計思想。

設計模式之中介者模式

1 抽象中介者,mediator 抽象中介 author jin.li public abstract class mediator2 具體的中介者,主機板 主機板中介 author jin.li public class mainboard extends mediator if colleagu...

設計模式之中介者模式

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

設計模式之中介者模式

嘮叨幾句 設計模式的案例我已經寫過大部分的案例,但是本人沒有經常寫部落格的習慣,最近在將本人之前在碼雲上的案例直接搬過來 個人感覺容易和外觀模式弄混,所以在這裡做下簡單的比較 外觀模式 本質封裝互動,組合呼叫。就是向外部提供一組功能,但是具體的實現比較複雜,內部有喝多的元件相互組合呼叫,強調的是外觀...