Java與設計模式(04)--單例模式
阿新 • • 發佈:2019-02-20
單例模式是個非常簡單的設計模式,設計目的就是使得目標類僅能建立一個例項。
需要實現這個設計目標我們需要做如下工作:
- 由於只能有一個例項,我們不能暴露預設的public構造方法(不能有任何一個public構造方法,即將預設的構造方法使用private隱藏起來),否則可以用new建立例項;
- 由於我們沒有構造方法,我們需要通過一個靜態的getInstance方法獲得一個類的例項;
- 具體實現需要考慮到多執行緒的同步問題;
具體程式碼如下:
單例類:
package com.freesoft.designpattern.singleton; public class Singleton { // 儲存唯一一份例項 private static Singleton instance = null; // 隱藏預設構造方法,這樣別人無法通過呼叫new Singleton()來建立物件例項 private Singleton() { } // 需要使得方法是同步方法,防止多執行緒同時排程時可能發生的問題 public static synchronized Singleton getInstance() { if (null == instance) { instance = new Singleton(); } return instance; } }
測試類:
package com.freesoft.designpattern.singleton; public class SingletonTest { public static void main(String[] args) { Singleton singleton = Singleton.getInstance(); System.out.println(singleton); // 如果是通過new建立的物件,打印出來的物件地址肯定是不一樣的 // 這裡一樣說明通過getInstance方法得到的物件是同一個物件 singleton = Singleton.getInstance(); System.out.println(singleton); } }