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

          Posted on 2006-11-26 13:57 Jaunt 閱讀(772) 評論(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

          主站蜘蛛池模板: 塔城市| 荣昌县| 潜江市| 贺州市| 武鸣县| 苏尼特左旗| 岑溪市| 石狮市| 清河县| 新乡县| 措美县| 英超| 平定县| 宁德市| 荣成市| 普安县| 易门县| 会同县| 东源县| 潢川县| 灌南县| 会昌县| 上高县| 辽阳市| 山东| 筠连县| 团风县| 乌兰浩特市| 黄大仙区| 华宁县| 新民市| 鲁甸县| 呼和浩特市| 石泉县| 罗源县| 宜宾市| 刚察县| 永清县| 建德市| 马鞍山市| 和静县|