java代理模式:Java设计模式的虚拟代理模式

        虚拟代理模式(Virtual Proxy)是种节省内存技术它建议创建那些占用大量内存或处理复杂对象时把创建这类对象推迟到使用它时候在特定应用中区别部分功能由区别对象组成应用启动时候不会立即使用所有对象在这种情况下虚拟代理模式建议推迟对象创建直到应用需要它为止对象被应用第次引用时创建并且同个例子可以被重用这种思路方法优缺点并存   优点:

  这种思路方法优点是在应用启动时由于不需要创建和装载所有对象因此加速了应用启动

  缺点:

  不能保证特定应用对象被创建在访问这个对象任何地方都需要检测确认它不是空(null)也就是这种检测时间消耗是最大缺点

  应用虚拟代理模式需要设计个和真实对象具有相同接口单独对象(指虚拟代理)区别客户对象可以在创建和使用真实对象地方用相应虚拟对象来代替虚拟对象把真实对象引用作为它例子变量维护代理对象不要自动创建真实对象当客户需要真实对象服务时虚拟代理对象上思路方法并且检测真实对象是否被创建

  如果真实对象已经创建代理把转发给真实对象如果真实对象没有被创建:

  1) 代理对象创建真实对象

  2) 代理对象把这个对象分配给引用变量

  3) 代理把转发给真实对象

  按照这种安排验证对象存在和转发思路方法这些细节对于客户是不可见客户对象就像和真实对象样和代理对象进行交互因此客户从检测真实对象是否为null中解脱出来另外由于创建代理对象在时间和处理复杂度上要少于创建真实对象因此在应用启动时候用代理对象代替真实对象

  例子:

  假设我们建立个JAVA集成开发环境(Integrated Development Environment),这个环境包括 3个功能:编译、运行、生成JavaDoc文档在新建和编辑Java最为常用是编译和运行至于生成JavaDoc文档对于每个Java不是必需因此在Java开发环境启动时不要创建和装载实现集成开发环境全部功能所有对象仅创建那些在编辑、编译、运行时用到对象保留提供生成JavaDoc文档对象这是个好设计思想这种对象创建策略能够高效地利用内存空间并且加快了集成开发环境启动速度

  假设编译、运行、生成JavaDoc文档这些功能分别由 3个工具类提供??Compiler、Runtime和JavaDoc客户对象可以访问区别IDE操作接口以抽象类IDEOperation形式定义

1   public abstract IDEOperation {
2
3   private Compiler cmp;
4
5   private Runtime rtime;
6
7   public void compile(String javaFile) {
8
9   cmp.compile(javaFile);
10
11   }
12
13   public void run(String File) {
14
15   rtime.run (File);
16
17   }
18
19   //to be delayed until needed.
20
21   public abstract void generateDocs(String javaFile);
22
23   public IDEOperation {
24
25   cmp = Compiler;
26
27   rtime = Runtime;
28
29   }
30
31   }
32


="xspace-totlerecord">3="xspace-totlepages">1/3="xspace-current">123>
Tags:  java设计模式chm java设计模式pdf java设计模式 java代理模式

延伸阅读

最新评论

发表评论