5_代理模式

代理模式

追求者通过代理送东西给被被追求者

没有代理的代码

image.png

被追求者不知道追求者!!!,追求者只能通过代理,代理知道被追求者

那么我们可以如下图所示

image.png

public class Proxy implements Subject{
    private RealSubject realSubject;

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

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

    @Override
    public void Request() {
        realSubject.Request();
    }
}

public class RealSubject implements Subject{

    @Override
    public void Request() {
        System.out.println("请求");
    }
}

public interface Subject {
    void Request();
}

代理模式的应用场合

  • 远程代理,为一个对象再不同的地址空间提供局部代表,这样可以隐藏对象存在不同空间的事实
  • 虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象,比如有一个很大的html文件,我们可以很快打开它,但是图片使一张一张下载的,这时候代理存放的是这些文件的地址。
  • 安全代理,用来控制真实对象访问的权限。一般是用于对象的不同权限访问(因为一个代理可以对应多个对象,通过代理来选择相应的对象)
  • 智能代理,调用真实代理时,代理处理一些例外的事(使用父类的方法来套娃)
posted @ 2022-01-27 16:05  随便写写啦  阅读(59)  评论(0编辑  收藏  举报