1. 程式人生 > >單例模式-Singleton

單例模式-Singleton

加載 null 允許 nbsp 訪問 加載類 public tin style

單例模式:保證一個類僅有一個實例,並提一個訪問它的全局訪問點。

  通常我們可以讓一個全局變量使得一個對象被訪問,但它不能防止你實例化多個對象。一個最好的辦法就是,讓類自身負責保存它的唯一實例。這個類可以保證沒有其他實例可以被創建,並且他可以提供一個訪問該實例的方法。

單例模式的兩種實現方式:

  懶漢式:加載類事較慢,但運行時獲取對象速度較快,線程安全

    /**
     * 懶漢模式(在類加載時初始化實例)
     */
    public class LazySingleton {
      // 1.將構造方法私有化,不允許外部直接創建對象
      private LazySingleton() {

      }

      // 2.創建類的唯一實例
      private static LazySingleton instance = new LazySingleton();

      // 3.提供一個用於獲取實例的方法

      public static LazySingleton getInstance() {
        return instance;
      }
    }

  餓漢式:加載類時較快,但運行時第一次獲取對象是較慢,線程不安全

    /**
     * 餓漢式(在第一次獲取實例的時候,初始化實例)
     */
    public class HungrySingleton {
      // 1.私有化默認構造函數
      private HungrySingleton() {
      }

      // 2.聲明類的唯一實例,用private static修飾符修飾
      private static HungrySingleton instance;

      // 3.創建一個全局的獲取對象的方法,使用private static修飾符修飾
      public static HungrySingleton getInstance() {
        if (instance == null) {
          instance = new HungrySingleton();
        }
        return instance;
      }
    }

  

單例模式-Singleton