java软件体系结构设计模式----虚代理

来源:互联网 发布:java的scanner类 编辑:程序博客网 时间:2024/05/10 05:31

说明:

虚代理是一种节省内存的技术,以便确保对象只有在被调用到的时候才得到创建,尤其是这样的对象创建需要大量的内存消耗或者其他资源


优点:

程序启动快,应为在启动时不需要创建或者加载所有的应用对象。

缺点:

应为无法确认一个对象是否已经创建。每次访问它的时候都要先检查来确保它已经非空(即已经创建)


实例:

假设读者为java语言开发一个IDE来实现编译,执行和javadoc文档生成的工作。在大部分情况下,当Java程序被创建或修改时,它会被编译和执行,但不是

每个java程序都需要生成文档。


代码:

public abstract class IDEOperation {
  private Compiler cmp;
  private Runtime rtime;


  public void compile(String javaFile) {
    cmp.compile(javaFile);
  }


  public void run(String classFile) {
    rtime.run (classFile);
  }


  //to be delayed until needed.
  public abstract void generateDocs(String javaFile);




  public IDEOperation() {
    cmp = new Compiler();
    rtime = new Runtime();
  }
}


class Compiler {


  public void compile(String javaFile) {
    //
  }
}


class Runtime {


  public void run(String classFile) {
    //
  }
}


public class RealProcessor extends IDEOperation {
  JavaDoc jdoc;
  public RealProcessor() {
    super();
    jdoc = new JavaDoc();
  }
  public void generateDocs(String javaFile) {
    jdoc.generateDocs(javaFile);
  }
}
class JavaDoc {


  public void generateDocs(String javaFile) {
    //
  }
}


public class ProxyProcessor extends IDEOperation {
  private RealProcessor realProcessor;


  public void generateDocs(String javaFile) {
    /*
     In order to generate javadocs
     the proxy loads the actual object and
     invokes its methods.
     */


    if (realProcessor == null) {
      realProcessor = new RealProcessor();
    }
    realProcessor.generateDocs(javaFile);
  }
}