天太熱,失眠了,實在睡不下去,就再寫篇文章來靜靜心吧,我爲何寫設計模式,由於設計模式是思想上的東西,程序員的法寶之一就是編程思想。程序員
在面向對象中,對象之間的認識是分角度的,好比A對象,B對象,若是A對象存了B對象的引用,那麼從A對象的角度來講,A對象認識B對象,可是B對象不認識A對象,若是B對象也存了A對象的引用,這時,才能說A,B互相認識。編程
或者是A,B對象互相不認識,可是A,B對象都認識C對象,而C對象認識A,B對象,這樣,能夠經過C對象來間接讓A,B對象互相認識,互相通訊。扮演紅娘角色,即中介角色。設計模式
對象之間的認識分區域性,好比在對象的整個生命中期都認識的對象(父母),或者是過客,我只在某個時間(時間即空間)認識的對象(某個旅遊景點認識的驢友)。ide
好比種種緣由,兩個對象不想直接發生關係,就找一箇中間人傳話。this
直接上例子,我來解釋:設計
//抽象對象UnitedNations在方法中認識Country 對象
abstract class UnitedNations
{
public abstract void Declare(string message, Country colleague);
}生命週期
//具體對象認識USA, Iraq 這兩個對象在方法中認識Country這個對象ci
class UnitedNationsSecurityCouncil : UnitedNations
{
private USA colleague1;
private Iraq colleague2;string
public USA Colleague1
{
set { colleague1 = value; }
}
public Iraq Colleague2
{
set { colleague2 = value; }
}
public override void Declare(string message, Country colleague)
{
if (colleague == colleague1)
{
colleague2.GetMessage(message);
}
else
{
colleague1.GetMessage(message);
}
}
}
//抽象對象認識UnitedNations 這個對象
abstract class Country
{
protected UnitedNations mediator;
public Country(UnitedNations mediator)
{
this.mediator = mediator;
}
}
//具體對象USA在整個生命週期中都認識mediator這個對象
class USA : Country
{
public USA(UnitedNations mediator)
: base(mediator)
{
}
public void Declare(string message)
{
mediator.Declare(message, this);
}
public void GetMessage(string message)
{
Console.WriteLine("美國得到對方信息:" + message);
}
}
//具體對象在整個生命中期都認識mediator
class Iraq : Country
{
public Iraq(UnitedNations mediator)
: base(mediator)
{
}
public void Declare(string message)
{
mediator.Declare(message, this);
}
public void GetMessage(string message)
{
Console.WriteLine("伊拉克得到對方信息:" + 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("咱們沒有核武器,也不怕侵略。");
總結,對象之間的認識關係分區域性,在哲學中,區域性至關於時間性,對象認識另外一個對象,必須能夠訪問另外一個對象的空間,即另外一個對象的引用。
老生常談,編程的法寶之一就是編程思想。