设计模式-代理模式

代理模式

解决场景:

需要通过代理去访问目标对象的时候,比如目标对象不能由访问对象直接访问,就需要访问对象通过代理去访问目标。

代理即为中介

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("访问正常对象之后的后续处理");
    }

}

  

原文地址:https://www.cnblogs.com/meijsuger/p/11434039.html