当前位置:  技术问答>java相关

Think in Patterns问题求解一,设计模式达人入

    来源: 互联网  发布时间:2017-03-25

    本文导语:  //: c01:SingletonPattern.java // The Singleton design pattern: you can // never instantiate more than one. // Since this isn't inherited from a Cloneable // base class and cloneability isn't added, // making it final prevents cloneability from // being...

//: c01:SingletonPattern.java
// The Singleton design pattern: you can
// never instantiate more than one.

// Since this isn't inherited from a Cloneable
// base class and cloneability isn't added,
// making it final prevents cloneability from
// being added through inheritance:
final class Singleton {
  private static Singleton s = new Singleton(47);
  private int i;
  private Singleton(int x) { i = x; }
  public static Singleton getReference() { 
    return s; 
  }
  public int getValue() { return i; }
  public void setValue(int x) { i = x; }
}

public class SingletonPattern {
  public static void main(String[] args) {
    Singleton s = Singleton.getReference();
    System.out.println(s.getValue());
    Singleton s2 = Singleton.getReference();
    s2.setValue(9);
    System.out.println(s.getValue());
    try {
      // Can't do this: compile-time error.
      // Singleton s3 = (Singleton)s2.clone();
    } catch(Exception e) {
      e.printStackTrace(System.err);
    }
  }
} ///:~

SingletonPattern.java always creates an object, even if it’s never used. Modify this program to use lazy initialization, so the singleton object is only created the first time that it is needed.

|
使用lazy initialization在第一次调用getReference()是创建对象

public static Singleton getReference() { 
  return s; 
}
改为:
public static Singleton getReference() { 
  if(s==null){
     s = new Singleton(47);
  }
  return s; 
}

|
public class LazySingleton {

  private static LazySingleton lazy = null;
  private int i;
  public LazySingleton() {
  }
  private LazySingleton(int x)
  {
      i=x;
  }

  public static LazySingleton getInstance()
  {
      if(lazy==null)
      {
          lazy = new LazySingleton(47);
      }
      return lazy;
  }

  public int getValue()
  {
      return i;
  }
  public void setValue(int x)
  {
      i = x;
  }

}

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 哪里还有Think in java!答者给分,谢谢
  • Think in Java
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • Think in java 源码
  • THINK IN JAVA版本问题!
  • 什么地方有 Think in java 的代码下载(50分)在线等候!!!
  • 新手求助!!哪里有《THINK IN JAVA》免费下载?
  • 《think in java》出第三版了!!!!
  • think in java书店有卖吗?
  • 有人能提供THINK IN JAVA 第二版的简体中文下载吗?
  • 关于Think in Java一书
  • Think第二版发布了!(本人开发的C语言跨平台开发库)
  • 哪里有THINK IN JAVA 下载呀?(中文的)
  • 请问《Think in Java》的作者的网站网址是多少?
  • 请问到哪儿能下载think in java.的电子版。
  • 各位高手,那有think in java 的电子书下载
  • 哪有Think In Java的中文版和关于Corba的书下载?
  • <think in java>讨论区
  • 高分征集Think in java(第2版)中文电子版
  • 谁有候捷的think in java 的电子书阿?请


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3