單例是通過**的寫法達到乙個例項在乙個堆中永遠只有乙個的目的,從而去除記憶體不必要的開銷或達到某些例項(例如資料庫連線池、常見框架中的控制-事物-持久層等)永遠唯一的目的。筆者總結了以下三種可用的單例寫法,懶漢/餓漢式的寫法不再贅述
雙重判定鎖
/**
* 雙重判定鎖
*/public
class
singleton
public
static singleton getinstance()
}return singleton;
}public
static
void
main
(string[
] args)
}}
靜態屬性/**
* 作為靜態常量屬性的單例
*/class
singleton2
public
static
void
main
(string[
] args)
}}
靜態內部類/**
* 作為靜態常量屬性且通過靜態內部類構造的單例
*/class
singleton3
private
static
class
sintletonclassinstance
public
static singleton3 getinstance()
public
static
void
main
(string[
] args)
}}
至於選擇哪種方案,取決你自己的喜好和習慣 單例模式的三種寫法
這裡介紹三種單例模式寫法。第一種 餓漢模式 類載入時就初始化 public class singletonhungry public static singletonhungry getinstance 第二種 懶漢模式 類載入時不初始化,當呼叫getinstance方法時初始化 public cl...
單例模式的三種寫法
創造型模式 單例模式 餓漢式 推薦優點 在類載入的時候就已經建立好了例項,沒有執行緒同步的問題 缺點 如果這個例項從始至終都沒有用到,那麼就會造成記憶體浪費 方法一 使用靜態物件 public class singleton 提供乙個靜態方法返回例項物件 public static singleto...
使用單例時的三種單例寫法
單例 乙個類只有乙個例項,在外部建立物件時,不能用alloc.只要alloc,就會在堆區開闢空間,就意味著有多個物件 所以我們要提供乙個建立物件的方法 1.加號方法 2.返回值型別為當前類 3.方法名以default standared,main,shared等開頭 當前類名 下面以person類為...