您的位置:首页 > 编程语言 > C#

(C#)代理模式

2015-08-05 10:39 417 查看
1.代理模式

  为其他对象提供代理以控制对这个对象的访问。

远程代理:为一个对象在不同的地址空间提供举报代表。这样可以隐藏一个对象在不同地址空间的事实。

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

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

智能代理:指当调用真实对象时,代理处理另外一些事。

2.实例

namespace 代理模式
{
class Program
{
static void Main(string[] args)
{
GirlMM mm = new GirlMM();
mm.Name = "夏花";

Proxy proxy = new Proxy(mm);

proxy.GiveDolls();
proxy.GiveFlowers();
proxy.GiveChocolate();

Console.ReadLine();
}
}

/// <summary>
/// 被代理对象执行的操作接口
/// </summary>
interface IGiveGift
{
void GiveDolls();
void GiveFlowers();
void GiveChocolate();
}

/// <summary>
/// 被代理者希望代理执行操作的类
/// </summary>
class GirlMM
{
private string name;
public string Name
{
get { return name; }
set {name = value;}
}
}

/// <summary>
/// 被代理者
/// </summary>
class Pursuit: IGiveGift
{
GirlMM mm;
public Pursuit(GirlMM 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:IGiveGift
{
Pursuit gg;

public Proxy(GirlMM mm)
{
gg = new Pursuit(mm);

}

public void GiveDolls()
{
gg.GiveDolls();
}
public void GiveFlowers()
{
gg.GiveFlowers();
}
public void GiveChocolate()
{
gg.GiveChocolate();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: