單例模式
單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一,這種型別的設計模式屬于創建型模式,它提供了一種創建物件的最佳方式,
這種模式涉及到一個單一的類,該類負責創建自己的物件,同時確保只有單個物件被創建,這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要實體化該類的物件,
注意:
- 1、單例類只能有一個實體,
- 2、單例類必須自己創建自己的唯一實體,
- 3、單例類必須給所有其他物件提供這一實體,
解決的問題
可以保證一個類在記憶體中的物件唯一性,必須對于多個程式使用同一個配置資訊物件時,就需要保證該物件的唯一性,
代碼實作
常見的兩種實作方式:餓漢式、懶漢式
餓漢式:
public class SingletonTest1
{
public static void main(String[] args)
{
Bank bank1 = Bank.getBank();
Bank bank2 = Bank.getBank();
//驗證這兩個指的是不是同一個物件
System.out.println(bank1==bank2);
}
}
class Bank
{
//1、私有化構造器
private Bank()
{
}
//2、內部創建類的物件(注意此物件也必須是靜態的)
private static Bank bank = new Bank();
//3、提供公共的靜態的方法,回傳類的物件
public static Bank getBank()
{
return bank;
}
}
驗證結果:

懶漢式:
public class SingletonTest2
{
public static void main(String[] args)
{
Book book1 = Book.getInstance();
Book book2 = Book.getInstance();
System.out.println(book1 == book2);
}
}
class Book
{
//1、私有化構造器
private Book()
{}
//2、宣告當前類物件,并不初始化
private static Book instance = null;
//3、宣告公共的靜態的方法
public static Book getInstance()
{
//需要物件時,判斷物件是否存在,不存在時才創建
if (instance == null)
{
instance = new Book();
}
return instance;
}
}
兩種方式的特點:
餓漢式是天然的執行緒安全的;懶漢式具有延時加載的特性(用的時候再創建物件)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/184906.html
標籤:Java
