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

          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

          主站蜘蛛池模板: 西和县| 思南县| 军事| 夏河县| 克山县| 仙居县| 巩义市| 海南省| 丹东市| 虎林市| 三河市| 罗甸县| 古蔺县| 同江市| 普定县| 于都县| 崇信县| 南川市| 盘山县| 邯郸县| 洞口县| 墨玉县| 神池县| 太康县| 新龙县| 疏附县| 望奎县| 六安市| 凭祥市| 宁陕县| 赤城县| 萝北县| 丹东市| 固阳县| 乌兰察布市| 新郑市| 牙克石市| 白沙| 独山县| 济阳县| 伊宁县|