單例設計模式
單例設計模式的引出
當構造方法私有化時,無法從外部進行構造方法的調用栈顷。在保證所有方法都不修改的方法時烦衣,要求讓類進行適當?shù)淖兓梢詮耐獠康玫筋惖膶嵗瘜ο蟛⑶掖靡话惴椒ā?br>
分析一:最主要的是構造方法是private的所以根據(jù)private的屬性我們可以想到,在本類準備好一個實例化對象.
分析二:然而此時申明的對象是類的普通屬性拢锹,必須要實例化才能使用摩窃,那么就考慮使用static兽叮,因為static不受到實例化對象的控制.
分析三:類中的屬性都要進行private封裝,所以此時申明的對象如果封裝了猾愿,就必須要通過方法訪問鹦聪,那么此時要訪問的static屬性,并且類無法直接在外部產生實例化對象蒂秘,
那么編寫一個Sstatic方法就好了
分析四:這么寫代碼折騰一圈目的還是在外部實例化對象泽本,調用方法,脫褲子放屁的意義在哪姻僧?意義在于不管外部有多少個對象聲明规丽,最終所能夠產生的實例化對象只有一個蒲牧,所以叫單例
image.png
分析四:有缺陷,要加一個final關鍵字赌莺,加一個final的意義在于冰抢,如果在getInstance()方法里這么寫
public static Singleton getInstance(){
instance=new Singleton();
return instance;
}
會發(fā)生邏輯錯誤,每次返回的都是新的實例艘狭,單例模式不存在
單例設計模式的特點
構造方法私有挎扰,外部無法實例化,只能通過類提供的static方法取得唯一的一個引用
單例設計模式的兩種形式
- 餓漢式:不管程序中是否有對象需要使用此類巢音, 那么此類的對象都要實例化好
- 懶漢式:在第一次使用的時候才進行實例化
image.png