首页 > 编程知识 正文

C# 设计模式-代理(Proxy)

时间:2023-05-05 10:38:56 阅读:192778 作者:227

为对象提供代理,以控制对该对象的访问。

主要组成:

Subject-代理和实体的共用类或接口
Proxy-代理
RealSubject-实体

适配器与代理的区别:

适配器为对象提供一个不同的接口。代理提供与实体相同的接口。

装饰和代理的区别:

装饰为对象动态添加额外功能。代理则控制对象的访问(不改变原有对象的功能),但可以在对象访问前后,做一些额外处理(比如,打日志、审计、事务等等)。典型例子:Spring AOP动态代理

相关类:

using System;namespace Proxy{ /// <summary> /// 网页(代理和实体的共用类或接口) /// </summary> abstract class WebpageSubject { public abstract string RequestWebpage(); } /// <summary> /// 浏览器(代理) /// </summary> class BrowserProxy : WebpageSubject { //真实网页(实体)(私有类使得只有浏览器才能访问真实网页) private class WebpageRealSubject : WebpageSubject { public override string RequestWebpage() { return "访问网页"; } } WebpageSubject webpageSubject; public override string RequestWebpage() { //延迟初始化 if (webpageSubject == null) { webpageSubject=new WebpageRealSubject(); } return webpageSubject.RequestWebpage(); } }}

调用:

using System;namespace Proxy{ class Program { static void Main(string[] args) { WebpageSubject webpage = new BrowserProxy(); //访问网页 Console.WriteLine(webpage.RequestWebpage()); Console.Read(); } }}

结果:

参考资料:《设计模式-可复用面对对象软件的基础》

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。