继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

设计模式之普通代理模式

慕设计6931647
关注TA
已关注
手记 54
粉丝 7190
获赞 186
一句话解释

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

类结构:
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开发方面的文章哦~

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP