设计模式之普通代理模式


一句话解释

代理模式的一句话解释就是:真实类和代理类共同实现一个接口,客户端直接调用代理类。代理类内部调用实现类


类结构:

1 抽象主题角色:

可以是抽象类也可以是接口。

public interfece Subject{
    // 定义公共的方法
    public void request();
}


2 真实主题角色

也就是“一句话解释”里面的真实类。是实现基础业务逻辑的地方

public class RealSubject implements Subject {
    @Override
    public void request() {
        // 业务代码
    }
}


3 代理类

public class Proxy implements Subject {

    private Subject subject;

    public Proxy() {
        subject = new RealSubject();
    }

    @Override
    public void request() {
        // 调用真实角色的方法
        this.subject.request();
    }
}

当然了, 这里可以通过构造器传入一个Subject对象,来代理指定的对象


扩展

1 切面

可以在代理类中增加额外的处理代码,实现“切面”的功能。比如,在调用真实角色的方法前,可以添加beforeafter方法:

public class Proxy implements Subject {

    private Subject subject;

    public Proxy() {
        subject = new RealSubject();
    }

    @Override
    public void request() {
        this.before();
        // 调用真实角色的方法
        this.subject.request();
        this.after();
    }

    private void before() {
        // 调用前做一些事情
    }

    private void after() {
        // 调用后做一些事情
    }
}

这样做有什么好处?如果做过WEB开发的同学应该都听说过“面向切面编程”。面向切面编程,可以很方便地做日志处理、权限拦截等功能。

感谢您的阅读,若您喜欢,可以点击下方的的“推荐”支持我。谢谢!

也可以关注我的慕课账号,会经常更新Java、算法、Vue开发方面的文章哦~

点赞