Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

代理模式---proxy

来源: jtlyuan 分享至:

代理(Proxy)模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。

为其它对象提供一种代理以控制对目标对象的访问。即第三方对象通过访问代理对象而达到访问目标对象之目的,与此同时,代理对象在访问目标对象前后加入特定的逻辑以实现功能的扩展



interface IProxy

{

string Function1();

string Function2();

}

远程对象实现:

/// <summary>

/// 模拟的远程对象

/// </summary>

public class LongDistanceClass:IProxy

{

#region IProxy 成员

public string Function1()

{

//do someting

return "LongDistanceClass.Function1";

}

public string Function2()

{

//do someting

return "LongDistanceClass.Function2";

}

#endregion

}

接下来就要实现代理类型,使用代理对象访问模拟的远程对象,代理类型实现如下:

public class ProxyClass:IProxy

{

#region IProxy 成员

public string Function1()

{

//to access LongDistanceClass.Function1

LongDistanceClass obj = new LongDistanceClass();

return obj.Function1();

}

public string Function2()

{

//to access LongDistanceClass.Function2

LongDistanceClass obj = new LongDistanceClass();

return obj.Function2();

}

#endregion

}

最后实现客户端代码:

class Class1

{

[STAThread]

static void Main(string[] args)

{

IProxy pro = new ProxyClass();

Console.WriteLine(pro.Function1());

Console.WriteLine(pro.Function2());

Console.Read();

}

}

运行结果如下:

LongDistanceClass.Function1

LongDistanceClass.Function2

代理模式和装饰者模式上在语法形式上几乎完全一样,那么它们的区别在哪里呢?
装饰者模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活
代理模式:为其它对象提供一种代理以控制对这个对象的访问。

其实,它们的着重点一个在于“增加”职责,另一个在于“控制”访问。这是它们最本质的区别。

由此可以看到:学习设计模式重点在于“语义”上把握,而不是追求它的“形式。

  • 大小: 39.6 KB
  • 查看图片附件

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史