設計模式漫談之代理模式

Wang_Charle發表於2018-04-22

  設計模式這個東西理論上多,說的人多,能理解的人少,願意看的人少,因此我這個瀏覽量上不去很正常。不過我希望幫助到真正想看的人。剛和以前同事通了電話,程式設計師同事之間如果想成為朋友,必須一起拼搏,等若干年後,大家回憶起來那段經歷,自然友誼常在!今天去見了同事給我介紹的女朋友,小孩無娘,說起來話長,一句話,我真的需要找一個好姑娘談戀愛結婚了。

物件與物件之間若有關係,需要一個物件能訪問到另一個物件的引用。編譯型語言,需要先設計這種關係(設計類),然後再複製物件。老人有言“露頭椽子先糟”,在國內這個大環境下,人怕出名豬怕壯,所以等你成功後,要學會退居二線,但是你還可以做幕後黑手。你需要一個代理人行使你的特權。

介面這種東西,在語義上就是定義幹那些事,屬於抽象設計層的東西。解決問題都是從抽象到具體的,抽象層面先設計,不去具體實現。

廢話不說,今天說代理模式,這個模式應用很廣,需要理解運用,最後,我那個DAL層就用到代理模式了。還是上例子,我來解釋。

//定義我就有哪些權利,(要幹什麼)

interface GiveGift
{
void GiveDolls();
void GiveFlowers();
void GiveChocolate();
}

//真正乾的人,有權的人

class Pursuit : GiveGift
{
SchoolGirl mm;
public Pursuit(SchoolGirl mm)
{
this.mm = mm;
}
public void GiveDolls()
{
Console.WriteLine(mm.Name + ” 送你洋娃娃”);
}

public void GiveFlowers()
{
Console.WriteLine(mm.Name + ” 送你鮮花”);
}

public void GiveChocolate()
{
Console.WriteLine(mm.Name + ” 送你巧克力”);
}
}

//找代理者公開我這些(介面的權利)權利,

class Proxy : GiveGift
{
Pursuit gg;
public Proxy(SchoolGirl mm)
{
gg = new Pursuit(mm);
}

public void GiveDolls()
{
gg.GiveDolls();
}

public void GiveFlowers()
{
gg.GiveFlowers();
}

public void GiveChocolate()
{
gg.GiveChocolate();
}
}

//具體操作步驟

SchoolGirl jiaojiao = new SchoolGirl();
jiaojiao.Name = “李嬌嬌”;

Proxy daili = new Proxy(jiaojiao);

daili.GiveDolls();
daili.GiveFlowers();
daili.GiveChocolate();

 

總結,代理模式,就是找個可以公開的物件。重要的東西說三遍,面向介面程式設計,就是面向抽象程式設計,不要先考慮具體實現,先抽象設計。

不說了,程式設計思想這東西,需要多思考,多總結。多把自己感悟的記錄下來。

相關文章