代理模式

代理模式的意图:
   为一个对象留了一个占位的对象或代理来获取和控制这个对象.
代理模式的应用场景:
   1.一个代理可以代表一个不处于同一位置的对象
   2.一个代理通过被代理对象来一些消耗很大的操作.
   3.一个保护代理,可以来控制对一个对象的访问权限.
典型的应用场景:
   1.对另一个对象进行控制和获取.
   2.惰性初始化,就是为了减少一些很耗时的操作
   3.来实现日志的功能
   4.促进对象之间的连接,减少耦合性
   5.对一个对象的引用计数
实现方式:
   在代理对象内存有一个被代理对象的实例,有时可以是代理类是被代理类的子类.然后本该对被代理类的操作都改为了对代理类的操作,然后代理类就可以改变被代理类的一些行为会增加额外的行为.

代理模式和装饰模式好像啊,感觉只是我们的理解的方向反过来了.另外,Spring的AOP就是使用代理模式来实现的,当为一个类增加一个切面的时候,就会为这个类创建一个代理对象,然后当对这个类进行操作的时候,实际上是对这个代理带进行操作,然后在代理类内,我们就可以在被代理类的方法之前之后增加一些操作,这就是Spring为我们提供的AOP功能.所以Spring提供的AOP的功能很有限,只可以在简单方法上增加切面.

原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/5759823.html