代理模式

来源:互联网 发布:淘宝清理图片空间 编辑:程序博客网 时间:2024/06/06 05:53

代理模式(Proxy:为其他对象提供一种代理以控制对这个对象的访问。代理模式分为静态代理(所代理的类型是固定的,见下例)和动态代理(可以代理任何类型)

类图:

代码:

publicinterface Subject {

    publicvoidrequest();

}

publicclass RealSubjectimplements Subject {

    @Override

    publicvoid request() {

       System.out.println("实际操作");

    }

}

publicclass Proxyimplements Subject{

    private Subjectsubject;

    public Proxy(Subject subject){

       this.subject=subject;

    }

    @Override

    publicvoid request() {

       System.out.println("操作前检查/日志");

       subject.request();

    }

}

publicstaticvoid main(String[]args) {

       //客户端

       Subject sub=new RealSubject();

       sub=new Proxy(sub);

       sub.request();

    }

优点:隐藏了被代理类。

缺点:none

      代理模式与适配器,装饰和外观很相似,都是把原有的功能重新包装而成为新的功能。适配器:把功能的接口统一;装饰:提升功能的实现;外观:组合功能;代理:隐藏功能的实现。

四种模式的比较:

 

适配器

装饰

外观

代理

外部调用

方便

麻烦

很方便

一般

扩展性

一般

复杂程度

一般

复杂

简单

一般

原创粉丝点击