设计模式漫谈之代理模式
设计模式这个东西理论上多,说的人多,能理解的人少,愿意看的人少,因此我这个浏览量上不去很正常。不过我希望帮助到真正想看的人。刚和以前同事通了电话,程序员同事之间如果想成为朋友,必须一起拼搏,等若干年后,大家回忆起来那段经历,自然友谊常在!今天去见了同事给我介绍的女朋友,小孩无娘,说起来话长,一句话,我真的需要找一个好姑娘谈恋爱结婚了。
对象与对象之间若有关系,需要一个对象能访问到另一个对象的引用。编译型语言,需要先设计这种关系(设计类),然后再复制对象。老人有言“露头椽子先糟”,在国内这个大环境下,人怕出名猪怕壮,所以等你成功后,要学会退居二线,但是你还可以做幕后黑手。你需要一个代理人行使你的特权。
接口这种东西,在语义上就是定义干那些事,属于抽象设计层的东西。解决问题都是从抽象到具体的,抽象层面先设计,不去具体实现。
废话不说,今天说代理模式,这个模式应用很广,需要理解运用,最后,我那个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();
总结,代理模式,就是找个可以公开的对象。重要的东西说三遍,面向接口编程,就是面向抽象编程,不要先考虑具体实现,先抽象设计。
不说了,编程思想这东西,需要多思考,多总结。多把自己感悟的记录下来。
上一篇: Flask初学者:url_for
下一篇: Django自带后台使用配置