动机:在需要用比较通用和复杂的对象指针来代替简单对象时,一般使用Proxy模式。
参与:
1.Proxy:保存对实际对象的引用;提供和实际对象一样的接口;分为Remote proxy(不同的地址空间)virtual proxy(可以缓存附加的信息)Protection proxy:(对实际对象的权限访问控制)
2.Subject:Proxy object 和Real object的接口
3.Real object
public interface Subject { void Request();}
public class RealObject : Subject
{
public override void Request()
{
Console.WriteLine("Called RealSubject.Request()");
}
}
public class ProxyObject : Subject
{
private RealObject _realObject;
public override void Request()
{
if (_realObject != null) _realObject = new RealObject();
Console.WriteLine("Called Proxy.Request()");
_realObject.Request();
}
}