设计模式-代理模式

177 阅读1分钟

代理模式的定义

代理模式是在不改变原始类代码的情况下,通过引入代理类来给原始类添加附加功能

代理模式的实例

image-20200806172448515

  • Subject抽象主题角色

    抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求。

  • RealSubject具体主题角色

    也叫做被委托角色、被代理角色。它才是冤大头,是业务逻辑的具体执行者。

  • Proxy代理主题角色

    也叫做委托类、代理类。它负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色实现,并且在真实主题角色处理完毕前后做预处理和善后处理工作。

package structuralDesgin.proxyPattern;

/**
 * 抽象主题类
 */
public interface Subject {
    public void request();
}

package structuralDesgin.proxyPattern;

/**
 * @author cuckooYang
 * @create 2020-08-06 17:29
 * @description 真实主题类
 **/

public class RealSubject implements Subject {
    //实现方法
    @Override
    public void request() {
        //业务逻辑处理
    }
}

/**
 * @author cuckooYang
 * @create 2020-08-06 17:30
 * @description 代理类
 **/

public class Proxy implements Subject {
    //要代理实现的类
    private Subject subject = null;
    //默认被代理类
    public Proxy(Subject subject){
        this.subject = subject;
    }
    //实现接口中定义的方法
    @Override
    public void request() {
        this.before();
        this.subject.request();
        this.after();
    }
    //预处理
    public void before(){
        //do Something
    }
    //善后处理
    public void after(){
        //do Something
    }
}