欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式漫谈之代理模式

程序员文章站 2022-03-18 16:00:59
设计模式这个东西理论上多,说的人多,能理解的人少,愿意看的人少,因此我这个浏览量上不去很正常。不过我希望帮助到真正想看的人。刚和以前同事通了电话,程序员同事之间如果想成为朋友,必须一起拼搏,等若干年后,大家回忆起来那段经历,自然友谊常在!今天去见了同事给我介绍的女朋友,小孩无娘,说起来话长,一句话, ......

  设计模式这个东西理论上多,说的人多,能理解的人少,愿意看的人少,因此我这个浏览量上不去很正常。不过我希望帮助到真正想看的人。刚和以前同事通了电话,程序员同事之间如果想成为朋友,必须一起拼搏,等若干年后,大家回忆起来那段经历,自然友谊常在!今天去见了同事给我介绍的女朋友,小孩无娘,说起来话长,一句话,我真的需要找一个好姑娘谈恋爱结婚了。

对象与对象之间若有关系,需要一个对象能访问到另一个对象的引用。编译型语言,需要先设计这种关系(设计类),然后再复制对象。老人有言“露头椽子先糟”,在国内这个大环境下,人怕出名猪怕壮,所以等你成功后,要学会退居二线,但是你还可以做幕后黑手。你需要一个代理人行使你的特权。

接口这种东西,在语义上就是定义干那些事,属于抽象设计层的东西。解决问题都是从抽象到具体的,抽象层面先设计,不去具体实现。

废话不说,今天说代理模式,这个模式应用很广,需要理解运用,最后,我那个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();

 

总结,代理模式,就是找个可以公开的对象。重要的东西说三遍,面向接口编程,就是面向抽象编程,不要先考虑具体实现,先抽象设计。

不说了,编程思想这东西,需要多思考,多总结。多把自己感悟的记录下来。