导言:临近年关,提高班也要放假了,我不得不去老王店里买点东西,因为有要事在身,我委托了火云去王老板那里买点鲜花与糖果。
在这里subject定义为一个接口,RealSubject为本人,Proxy即为火云,我和火云继承了这个接口来实现买东西这件事情。代码为:
interface BuySomething //接口-买东西
{
void BuyFlowers();
void BuyCandys();
}
class MoneySource : BuySomething //出钱者-我
{
ShopKeeper laowang;
public MoneySource(ShopKeeper laowang)
{
this.laowang = laowang;
}
public void BuyFlowers()
{
Console.WriteLine(laowang.Name + "我要买鲜花");
}
public void BuyCandys()
{
Console.WriteLine(laowang.Name + "我要买糖果");
}
}
class ShopKeeper //商店店主-老王
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
class Proxy : BuySomething //代理类
{
MoneySource gangge;
public Proxy(ShopKeeper laowang)
{
gangge = new MoneySource(laowang);
}
public void BuyFlowers()
{
gangge.BuyFlowers();
}
public void BuyCandys()
{
gangge.BuyCandys();
}
}
在代理类中,保存了一个引用使得代理可以访问实体。也就是说火云这个代理里面有我让他买东西的方法存在。
客户端代码:
static void Main(string[] args)
{
ShopKeeper laowang = new ShopKeeper();
laowang.Name = "王陆军";
Proxy huoyun = new Proxy(laowang);
huoyun.BuyFlowers();
huoyun.BuyCandys();
Console.Read();
}
这样就可以达到让火云替我买东西的事情了。代理模式:就是为其他对象提供一种代理以控制对这个对象的访问
在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式分为:
1.远程代理:为一个对象在不同的地址空间提供局部代表.这样可以隐藏一个对象存在于不同地址空间的事实.
2.虚拟代理:根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象.
3.安全代理:用来控制真实对象访问时的权限.
4.智能指引:当调用真实的对象时,代理处理另外一些事.
代理模式其实就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多重用途。
作者:a137151062 发表于2013-2-6 11:22:59 原文链接
阅读:22 评论:0 查看评论