Java设计模式——结构型模式:代理模式

模式动机

在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额外服务。

模式定义

给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式。

模式结构

代理模式包含如下角色:

  • Subject: 抽象主题角色
  • Proxy: 代理主题角色
  • RealSubject: 真实主题角色

在这里插入图片描述

时序图

在这里插入图片描述

代码实现

//抽象主题对象
public interface Producer {
    void product();
}

//真实主题对象
public class RealProducer implements Producer{
    @Override
    public void product() {
        System.out.println("生产了一个苹果手机");
    }
}

//代理对象
public class ProducerProxy implements Producer{

    private Producer producer;

    public ProducerProxy(Producer producer){
        this.producer=producer;
    }

    @Override
    public void product() {
        System.out.println("运送来零件");
        producer.product();
        System.out.println("配送到专卖店");

    }
}

//客户端
public class Client {

    public static void main(String[] args) {
        Producer producer = new RealProducer();
        ProducerProxy personProxy = new ProducerProxy(producer);
        personProxy.product();
    }

}


模式优缺点

优点

  • 协调调用者和被调用者,在一定程度上降低了系统的耦合度
  • 虚拟代理,可以通过一个小对象来代表一个大对象,减少系统资源消耗。
  • 远程代理可以使客户端访问远程机器上的对象。
  • 保护代理可以控制对真实对象的使用权限。

缺点

  • 实现代理模式需要额外工作,有些代理模式的实现非常复杂。
  • 由于在客户端与真实对象间使用了代理对象,有些类型的代理模式可能会造成请求对象的处理速度变慢。

模式扩展

动态代理(挖坑,以后来填)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值