天太熱,失眠了,實在睡不下去,就再寫篇文章來靜靜心吧,我為什麼寫設計模式,因為設計模式是思想上的東西,程式設計師的法寶之一就是程式設計思想。
在物件導向中,物件之間的認識是分角度的,比如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...
設計模式之中介者模式
中介者模式 假如沒有總經理,下面六個個部門,財務部 市場部 研發部,財務部要發工資,讓大家核對公司需要跟市場部和研發部都通氣,市場部要接個新專案,需要研發部門處理技術,需要財務部出資金,市場部跟各個部門打交道,雖然只有六個個部門,但是關係非常亂 實際上,公司有總經理,各個部門有什麼事情都通報給總結裡...
設計模式之中介者模式
嘮叨幾句 設計模式的案例我已經寫過大部分的案例,但是本人沒有經常寫部落格的習慣,最近在將本人之前在碼雲上的案例直接搬過來 個人感覺容易和外觀模式弄混,所以在這裡做下簡單的比較 外觀模式 本質封裝互動,組合呼叫。就是向外部提供一組功能,但是具體的實現比較複雜,內部有喝多的元件相互組合呼叫,強調的是外觀...