代理模式
解决场景:
需要通过代理去访问目标对象的时候,比如目标对象不能由访问对象直接访问,就需要访问对象通过代理去访问目标。
代理即为中介
package com.zang.schema.proxy; /** * @author Zhang Qiang * @Date 2019/8/30 11:02 */ public interface AbstractSubject { void request(String event); }
目标对象
package com.zang.schema.proxy; /** * 目标 需要通过代理访问的目标 * * @author Zhang Qiang * @Date 2019/8/30 11:04 */ public class RealSubject implements AbstractSubject { @Override public void request(String event) { System.out.println(event + "正常工作中..."); } }
代理对象
package com.zang.schema.proxy; /** * @author Zhang Qiang * @Date 2019/8/30 11:08 */ public class Proxy implements AbstractSubject { private RealSubject realSubject; @Override public void request(String event) { if (realSubject == null){ realSubject = new RealSubject(); } proRealSubject(); realSubject.request(event); postRealSubject(); } public void proRealSubject(){ System.out.println("访问正常对象之前的预处理"); } public void postRealSubject(){ System.out.println("访问正常对象之后的后续处理"); } }