設計模式之 單例模式 Singleton

2021-07-26 04:35:39 字數 1474 閱讀 8206

簡單來說,就是構造方法私有化,導致從類外部無法直接通過new得到該類的物件,類的內部提供靜態方法,用於得到該物件,且該類的物件在jvm中只存在乙個
1.某個類的物件經常被使用,且這個物件不具備狀態,但是經常new,這樣大大的消耗了效能。

2.某個類具有單一性,作為整個系統重要的乙個結點,如果出現多個結點,會導致整個系統紊亂

1.餓漢式:

public class center

//私有構造器保證外部無法通過new得到該物件

private static center entity = new center();

//靜態變數將在類載入器載入類時候初始化該變數

public static center getentity()

}2.懶漢式:

public class center

//私有構造器保證外部無法通過new得到該物件

private static center entity = null;

//初始化時賦值為null

public stastic center getentity()

}3.**解析:

1.通過私有化構造器可以讓外部不能通過new得到該類的例項物件,這樣增加通過外部方法獲得該類的例項物件的成本

2.餓漢式和懶漢式的區別:

1.餓漢式是在類載入的時候就初始化了該物件

2.懶漢式則是在第一次呼叫getentity()方法時候先去判斷entity是否為null,然後進行操作

3.兩種形式的優缺點:

2.懶漢式採用了懶載入(延遲載入)的方式,只有在第一次呼叫的時候才會去例項化這個物件,提高了**效率,但是也有不可避免的失誤,就是在多執行緒情況下,難以保證這個物件是否會正真得到唯一個該類的例項物件

1.增加synchronized 

public class center

private static center entity = null;

public static synchronized center getentity()

}2.以上的**加上了同步方法,這樣就可以保證該類在多執行緒下也只會有乙個物件,但是,一旦在**中使用了同步,很容易就帶來了對**效率沉重的打擊,所以我們要優化一下這段**

public class center

//構造方法私有化保證外部不能隨意通過new得到該類的例項物件

private static center entity = null;

//採用延遲載入

private static synchronized center newentity()

public static center getentity()

}這樣的情況下,保證了執行緒安全性,同時也降低了同步方法帶來的效能消耗。

Java設計模式 單例模式(single)

目錄目的 應用例項 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。菜鳥教程 乙個國家有乙個首都 windows 是多程序多執行緒的,在操作乙個檔案的時候,就不可避免地出現多個程序或執行緒同時操作乙個檔案的現象,所以所有檔案的處理必須通過唯一的例項來進行。第一種 package com.ga...

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...