深入剖析代理模式

代理模式理解

为其他对象提供一种代理以控制这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。

为什么需要代理?

因为一个良好的设计不应该轻易的修改。这正是开闭原则的体现:一个良好的设计应该对修改关闭,对扩展开放。而代理正是为了扩展类而存在的。他可以控制对现有类(需要被代理的类)服务的访问,通俗的解释就是可以拦截对于现有方法的调用并做些处理。

静态代理模式中,为什么要强制代理主题与真实主题实现相同的接口?

代理模式针对相同的接口编程,

1)以达到透明地替换原来的对象。

2)保证了代理对象具有和被代理对象具有一样的契约。

3)针对接口编程,灵活性,好处是不言而喻的。

4)代理类代理目标对象,必须让客户端看代理类和目标对象是一样的。

代理模式应用的几种情况:

通过代理来表示另一个地址空间中的对象,使得客户端可以访问在远程机器上的对象,远程机器可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求。

按需创建开销很大的对象。常用于延迟加载。如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。

控制对原始对象的访问,在访问对象时可以附加一些操作。

充当智能指针:能自动释放所引用的对象

总结

在客户端和目标对象之间增加了代理对象,中间加一层,,解耦。代理类和目标对象实现同一接口,对外部提供统一的接口方法,而代理类在接口中实现对真实类的附加操作行为,从而可以在不影响外部调用情况下,进行系统扩展。

使用双手头脑与心灵的是艺术家,只有合作双手

深入剖析代理模式

相关文章:

你感兴趣的文章:

标签云: