设计模式——代理模式
概念
①、什么是代理模式
为其他对象提供一种代理以控制对这个对象的访问
通俗点来说就是 通过一个共同的方法,将你对对象的真实请求交给proxy完成
②、主要解决什么问题
在某些情况下,一个客户类不想或不能直接引用一个委托对象
③、如何解决?
在客户类和委托对象之间增加一个中介者对象
④、优缺点
优点
在符合开闭原则的情况下对目标对象进行功能扩展
缺点
为每一个服务都得创建代理类,工作量太大,不易管理。同时接口一旦发生变化,代理类也得相应修改
图
Subject类:定义了RealSubject和Proxy的公共接口,这样就在任何使用RealSubject的地方都可以使用Proxy
RealSubject类:定义了Proxy所代表的真实实体。
Proxy类:保存一个引用使得代理可以访问实体,并提供一个与subject的接口相同的接口,这样代理就可以用来代替实体了。
代码
Subject类
//定义一个RealSubject和Proxy的公共接口 abstract class Subject { public abstract void Request(); }
RealSubject类
class RealSubject:Subject //调用Subject接口 { public override void Request() { Console.WriteLine("真实的请求"); } }
Proxy类
class Proxy:Subject { RealSubject realsubject; //声明一个RealSubject类的字段 public override void Request() { if (realsubject==null ) { realsubject = new RealSubject(); } realsubject.Request(); //调用RealSubject中的方法 } }
客户端代码
static void Main(string[] args) { Proxy proxy = new Proxy();//通过代理来实现真实的请求 proxy.Request(); Console.Read(); }