为了账号安全,请及时绑定邮箱和手机立即绑定

设计模式之普通代理模式

标签:
Java 架构
一句话解释

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

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消