手机
当前位置:查字典教程网 >编程开发 >C#教程 >c# 代理模式
c# 代理模式
摘要:代理模式的应用:远程代理,为一个对象在不同的地址空间提供局部代表,可以隐藏一个对象存在于不同地质空间的事实。虚拟代理,根据需要创建开销很大的...

代理模式的应用:

远程代理,为一个对象在不同的地址空间提供局部代表,可以隐藏一个对象存在于不同地质空间的事实。

虚拟代理,根据需要创建开销很大的对象,通过代理来存放实例化需要很长时间的真实对象。

安全代理,用来控制真实对象的访问权限。

智能代理,当调用代理时,可以代理处理一些额外的功能。

案例场景:

向一位自己心仪的女孩表达爱意,一般我们有两种选择:亲自出马(有自信的人)和 使用‘媒婆'(比较害羞)。

其中使用‘媒婆'就是代理行为,我们实现如下:

调用代理模式的主函数:

复制代码 代码如下:

class Program

{

static void Main(string[] args)

{

SchoolGirl jiaojiao = new SchoolGirl();

jiaojiao.Name = "李娇娇";

//亲自出马

IGiveGift self = new Pursuit(jiaojiao);

self.GiveChocolate();//送巧克力

self.GiveDolls();//送洋娃娃

self.GiveFlowers();//送鲜花

//使用‘媒婆'

IGiveGift daili = new Proxy(jiaojiao);

daili.GiveChocolate();//送巧克力

daili.GiveDolls();//送洋娃娃

daili.GiveFlowers();//送鲜花

Console.ReadKey();

}

}

SchoolGirl类是代表女孩对象,实现如下:

复制代码 代码如下:

public class SchoolGirl

{

private string name;

public string Name

{

get;

set;

}

}

Pursuit类是代表一个真实的事物(追求女孩的追求者),实现如下:

复制代码 代码如下:

public class Pursuit : IGiveGift

{

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 + "送你巧克力");

}

}

Proxy类是Pursuit类的代表,实现如下:

复制代码 代码如下:

public class Proxy : IGiveGift

{

Pursuit gg;

public Proxy(SchoolGirl mm)

{

this.gg = new Pursuit(mm);

}

public void GiveDolls()

{

gg.GiveDolls();

}

public void GiveFlowers()

{

gg.GiveFlowers();

}

public void GiveChocolate()

{

gg.GiveChocolate();

}

}

Pursuit类和Proxy类都继承IGiveGift接口,实现如下:

复制代码 代码如下:

interface IGiveGift

{

void GiveDolls();

void GiveFlowers();

void GiveChocolate();

}

我们看一张代理模式的结构图:

c# 代理模式1

【c# 代理模式】相关文章:

C++设计模式之代理模式

c#防止多次运行代码收集分享

C# 设置系统日期格式的方法

浅谈C#设计模式之代理模式

c# 类型构造器

使用代理模式来进行C#设计模式开发的基础教程

c#给图片添加文字的代码小结

C# 常见操作符整理

深入c#工厂模式的详解

C++设计模式编程中proxy代理模式的使用实例

精品推荐
分类导航