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

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

          主站蜘蛛池模板: 卢湾区| 稻城县| 宜州市| 北宁市| 高阳县| 合江县| 望奎县| 拉萨市| 双城市| 寻甸| 曲周县| 太和县| 东山县| 东莞市| 城步| 沿河| 开鲁县| 娱乐| 疏勒县| 彭山县| 恩施市| 毕节市| 五指山市| 阿克陶县| 新乡市| 东丽区| 宾川县| 铁力市| 西贡区| 余姚市| 本溪| 五台县| 永平县| 专栏| 钦州市| 乌鲁木齐市| 信丰县| 米林县| 关岭| 迭部县| 呼图壁县|