代理模式-控制对象访问

代理模式定义

为其它对象提供一种代理以控制对这个对象的访问。

代理模式结构图

在这里插入图片描述

代理模式角色介绍

抽象主题角色:Subject,一个普通的业务抽象类或接口。

真实主题角色,RealSubject,它实现了抽象主题角色定义的接口,是业务逻辑的真正执行者。

代理主题角色,Proxy,它和真实主题角色一样,也实现了抽象主题角色定义的接口,但它包含了对真实主题的引用,在任何需要的时候,把请求委托给真实主题角色进行处理;它对真实对象的访问进行控制。

代理模式结构代码

抽象主题:

public interface Subject {

    void request();
}

真实主题:

public class RealSubject implements Subject {
    public void request() {
        System.out.println("i am real");
    }
}

代理:

public class Proxy implements Subject {

    private Subject realSubject;

    public Proxy() {
        this.realSubject = new RealSubject();
    }

    public void request() {
        this.before();
        realSubject.request();
        this.after();
    }

    private void before(){
        System.out.println("i am proxy before");
    }

    private void after(){
        System.out.println("i am proxy after");
    }
}

客户端:

public class Client {

    public static void main(String[] args) {
        Subject subject = new Proxy();
        subject.request();
    }
}
代理模式运行机制

代理角色和真实主题角色实现共同的抽象主题角色,来达到代理角色替换真实主题角色的目的。
代理角色虽然可以替换真实主题角色,但代理角色通过持有真实主题角色对象,把请求再委托给真实主题角色;通常代理角色委托请求前后会进行相关前置或后置处理,以此达到对真实对象的控制。

代理模式解决的核心问题

代理模式通过共同实现和组合真实对象,实现了对真实对象的控制,相当于真实对象的前置屏障。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值