UML 图:
AbstractObject(包括Interface)为抽象类或者接口,包含代理对象需要代理对象帮其实现的接口方法或者抽象方法
ProxyObject 为代理对象,实现了上面的接口或者继承了抽象类,里面包含一个代理对象的引用
RealObject 为被代理对象,它也实现了接口或者实现了抽象类里面的方法
简述:说白了就是我 RealObject 实现的接口里面有个 operation() 方法,但是这个方法我不打算自己调用,我要让代理对象来帮我做。那为啥 RealObject 自己不调用还专门要别人去帮他做呢,这样有什么好处?答案就是功能增求,代理对象在执行 RealObject 中的 Operation 方法之前之后可以增加一些增强的代码(如果你接触过AOP、拦截器、过滤器……那对这个应该不难理解)。代理可分为静态代理、动态代理(接口用JDK、类用Cglib)
使用场景:在需要对代码功能进行增强的时候,为了不违反 "对修改关闭,对拓展开放" 的原则,可以采用代理模式
例子:AOP
详细请看拓展阅读: