代码改变世界

代理模式

2019-02-27 19:50  剑动情缥缈  阅读(168)  评论(0编辑  收藏  举报

1.基本概念

  • 给对象提供一个代理对象,通过代理对象调用实际对象
  • 作用:通过代理对象间接访问实际对象
  • 解决的问题:防止直接访问对象给系统带来不必要的复杂性(直接将实际对象接口完全暴露给客户端程序员)
  • UML

  

2.代码

package com.chengjie;

interface BuySubject {
    void buy();
}

class RealBuySubject implements BuySubject {
    @Override
    public void buy() {
        System.out.println("买一台MAC!");
    }
}

class RealBuySubjectProxy implements BuySubject {
    private BuySubject bs;

    public RealBuySubjectProxy(BuySubject bs) {
        this.bs = bs;
    }

    @Override
    public void buy() {
        bs.buy();
    }
}

public class TestProxyPattern {
    public static void main(String[] args) {
        new RealBuySubjectProxy(new RealBuySubject()).buy();
    }
}
View Code

3.优点

  • 添加了代理层,降低了系统耦合度
  • 代理层可以对目标对象进行屏蔽,使得对客户端程序员不可见,增加安全性

4.缺点

  • 增加了额外的处理流程,造成请求速度变慢
  • 额外实现了代理类,增加了复杂度

5.应用场景

  

6.参考

  https://www.jianshu.com/p/a8aa6851e09e