學習設計模式系列之“單例模式”
單例模式(也叫單件模式)的作用就是保證在整個應用程序的生命週期中,任何一個時刻,單例類的實例都只存在一個(當然也可以不存在)。
單例模式種類
餓漢式
聲明的同時直接實例化。
特點
加載類時比較慢,但運行時獲取對象的速度比較快,線程安全。
懶漢式
聲明的時候不實例化。
特點
加載類時比較快,但運行時獲取對象的速度比較慢,線程不安全。
實現單例模式的三個步驟
- 將構造方法私有化,不允許外界直接創建對象。
- 聲明類的唯一實例,使用private static修飾。
- 提供一個供外界獲取實例的方法,使用public static修飾。
代碼實現
餓漢式java代碼實現
public class Singleton
{
// 餓漢模式
// 1.創建類的唯一實例,使用private static修飾
private static Singleton instance = new Singleton();
// 2.構造函數設置成private,外界不能通過調用構造函數來創建對象
private Singleton()
{
}
// 3.提供一個用於獲取實例的方法,使用public static修飾
public static Singleton getInstance()
{
return instance;
}
}
懶漢式java代碼實現
public class Singleton_2
{
// 懶漢模式
// 1.創建類的唯一實例,使用private static修飾
private static Singleton_2 instance = null;
// 2.構造函數私有化,不允許外界通過構造函數生成對象
private Singleton_2()
{
}
// 3.提供一個用於獲取實例的方法,使用public static修飾
public static Singleton_2 getInstance()
{
if (instance == null)
{
instance = new Singleton_2();
}
return instance;
}
}