一個理解“單例模式”最好的例子

          Posted on 2006-11-26 13:57 Jaunt 閱讀(765) 評論(0)  編輯  收藏 所屬分類: 咖啡Java

          原文出處: http://www.javatang.com/archives/2006/06/27/512049.html
          編輯: Jaunt
          聲明: 請維持文章的完整性任意轉載

          SingletonTest.java:


          public class SingletonTest {
          ??? public static void main(String[] args) {
          ??????? Singleton s1 = Singleton.getInstance();
          ??????? Singleton s2 = Singleton.getInstance();
          ??????? System.out.println("s1=s2?" + (s1==s2));
          ??????? System.out.println("s1.getNextID = " + s1.getNextID());
          ??????? System.out.println("s2.getNextID = " + s2.getNextID());
          ??????? System.out.println("s1.getNextID = " + s1.getNextID());
          ??????? System.out.println("s1.getNextID = " + s1.getNextID());
          ??????? System.out.println("s2.getNextID = " + s2.getNextID());
          ??????? System.out.println("s2.getNextID = " + s2.getNextID());
          ??? }
          }

          class Singleton {
          ??? private static int nextID = 0;
          ??? private static Singleton instance = null;

          ??? private Singleton() {};

          ??? public static synchronized Singleton getInstance() {
          ??????? if (instance == null) {
          ??????????? instance = new Singleton();
          ??????? }
          ??????? return instance;
          ??? }
          ??? // inside data
          ??? public synchronized int getNextID() {
          ??????? return ++nextID;
          ??? }
          }

          輸出結果:

          s1=s2?true
          s1.getNextID = 1
          s2.getNextID = 2
          s1.getNextID = 3
          s1.getNextID = 4
          s2.getNextID = 5
          s2.getNextID = 6

          主站蜘蛛池模板: 叶城县| 甘南县| 子洲县| 喜德县| 邵东县| 深泽县| 恩施市| 洛浦县| 乌苏市| 宁武县| 元氏县| 轮台县| 张家界市| 新竹县| 会宁县| 永靖县| 翁源县| 东乡县| 河北省| 资兴市| 井陉县| 潮州市| 新营市| 东至县| 怀宁县| 普安县| 沙河市| 弋阳县| 宜川县| 三河市| 山东省| 平邑县| 沂水县| 龙山县| 卢氏县| 西林县| 新余市| 平邑县| 苏州市| 兴安盟| 比如县|