设计模式之代理模式

代理模式

什么是代理模式?

​ Provide a surrogate or placeholder for another object to control access to it.(为其他对象提供一种代理以控制对这个对象的访问。) 代理模式也叫做委托模式,它是一项基本设计技巧。许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式,而且在日常的应用中,代理模式可以提供非常好的访问控制。

通用代码
public interface Subject {
    /**
     * 定义一个方法
     */
    public void request();
}

public class RealSubject implements Subject {
    @Override
    public void request() {

    }
}
public class Proxy implements Subject {
    private RealSubject realSubject;

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

    //通过构造函数传递代理者
    public Proxy(Object... objects) {
    }

    //实现接口中定义的方法
    @Override
    public void request() {
        this.before();
        this.realSubject.request();
        this.after();
    }

    //预处理
    private void before() { //do something
    }

    // 善后处理
    private void after() { //do something
    }
}
代理模式的优点
  • 职责清晰 :真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件事务,附带的结果就是编程简洁清晰。
  • 高扩展性 :具体主题角色是随时都会发生变化的,只要它实现了接口,甭管它如何变化,都逃不脱如来佛的手掌(接口),那我们的代理类完全就可以在不做任何修改的情况下使用。
  • 智能化 :这在我们以上的讲解中还没有体现出来,不过在我们以下的动态代理章节中你就会看到 代理的智能化有兴趣的读者也可以看看Struts是如何把表单元素映射到对象上的。
代理模式的使用场景

​ 我相信第一次接触到代理模式的读者肯定很郁闷,为什么要用代理呀?想想现实世界 吧,打官司为什么要找个律师?因为你不想参与中间过程的是是非非,只要完成自己的答辩 就成,其他的比如事前调查、事后追查都由律师来搞定,这就是为了减轻你的负担。代理模 式的使用场景非常多,大家可以看看Spring AOP,这是一个非常典型的动态代理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值