浅读《大话设计模式》————7、为别人做嫁衣——代理模式
通读全文,我发现代理模式中的代理还是与现实中的代理还是不同的。代理模式中,真正动作人要代理做的事情,自己也要定义做的方法,就是自己要处理具体的事情。而代理,无非就是利用成员对象进行接口转移罢了。但是现实世界,代理是要全权处理所代理的事情的。游戏开发公司完全只是开发,与玩家的交互,服务器的维护则完全是运营代理商的事。所以,在学习代理模式时,我觉得应该首先明白在思想上对这两者进行弄明白。
代理模式:为其他对象提供一种代理以控制对这个对象的访问[DP]。
如果从以上这个定义,我们还可以挖掘出另一种层次的意思:代理模式为真实对象的访问提供了安全性屏障。
代理模式的设计:
1、Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy.
abstract class Subject
{
Public abstract void Request();
}
2、RealSubject类,定义Proxy所代表的真实实体
Classs RealSubject: Subject
{
Public override void Request()
{
Console.WriteLine("真实的请求");
}
}
3、Proxy类,保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体。
class Proxy : Subject
{
RealSubject realSubject;
Public override void Request()
{
If(realSubject == null)
{
realSubject = new RealSubject();
}
realSubject .Request() ;
}
}
4、客户端代码
Static void Main(string [] args)
{
Proxy proxy = new Proxy();
proxy.Request();
Console.Read();
}
关于代理模式的几个应用,我没看很明白,可能自己用得不多,不过似乎总结下来,代理模式起码的作用有:控制对真实对象访问的安全性;虚拟代理优化对大对象的访问;在真实对象操作之时,代理还可以做另外一些事情,使程序更智能。