設計模式這個東西理論上多,說的人多,能理解的人少,願意看的人少,因此我這個瀏覽量上不去很正常。不過我希望幫助到真正想看的人。剛和以前同事通了電話,程式員同事之間如果想成為朋友,必須一起拼搏,等若幹年後,大家回憶起來那段經歷,自然友誼常在!今天去見了同事給我介紹的女朋友,小孩無娘,說起來話長,一句話, ...
設計模式這個東西理論上多,說的人多,能理解的人少,願意看的人少,因此我這個瀏覽量上不去很正常。不過我希望幫助到真正想看的人。剛和以前同事通了電話,程式員同事之間如果想成為朋友,必須一起拼搏,等若幹年後,大家回憶起來那段經歷,自然友誼常在!今天去見了同事給我介紹的女朋友,小孩無娘,說起來話長,一句話,我真的需要找一個好姑娘談戀愛結婚了。
對象與對象之間若有關係,需要一個對象能訪問到另一個對象的引用。編譯型語言,需要先設計這種關係(設計類),然後再複製對象。老人有言“露頭椽子先糟”,在國內這個大環境下,人怕出名豬怕壯,所以等你成功後,要學會退居二線,但是你還可以做幕後黑手。你需要一個代理人行使你的特權。
介面這種東西,在語義上就是定義乾那些事,屬於抽象設計層的東西。解決問題都是從抽象到具體的,抽象層面先設計,不去具體實現。
廢話不說,今天說代理模式,這個模式應用很廣,需要理解運用,最後,我那個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();
總結,代理模式,就是找個可以公開的對象。重要的東西說三遍,面向介面編程,就是面向抽象編程,不要先考慮具體實現,先抽象設計。
不說了,編程思想這東西,需要多思考,多總結。多把自己感悟的記錄下來。