Java設計模式01 單例模式

2021-07-30 04:28:47 字數 1690 閱讀 7143

單例模式:乙個類僅能有乙個例項,並且向整個系統提供這乙個例項。 

單例模式的特點:

(1)單例類僅能有乙個例項。

(2)單例類必須為自己建立例項。

(3)單例類必須向外界提供獲取例項的方法。 

單例模式的形式:(1)懶漢式 、(2)惡漢式、(3)列舉式

class singleton 

//獲取單例例項物件

public static singleton getinstance()

return instance; }

public int getvalue()

}

但是以上的**是執行緒不安全的,多執行緒併發的情況下,singleton可能產生多個例項。

改進方法

1、在getinstance()方法上加同步鎖

//(1)使用同步鎖synchronized保證執行緒安全

class singleton

public static synchronized singleton getinstance()

return instance; }

public int getvalue()

}

2、使用靜態內部類的形式(優於同步方法)

class singleton 

private singleton()

public static singleton getinstance()

public int getvalue()

}

3、雙重校驗鎖 (不推薦)

/**

* * @author tao

* * 懶漢模式(雙重校驗鎖[不推薦])單例

*/public class singleton

public static singleton getinstance()

}}

return instance; }

public int getvalue()

}

class singleton 

public static singleton getinstance()

public int getvalue()

}

餓漢式在類建立的同時就已經建立好乙個靜態的物件供系統使用,以後不再改變,所以天生是執行緒安全的

使用方法:

public class singletontest

jvm會保證enum不能被反射並且構造器方法只執行一次

enum singleton 

}public class singletontest

}

01 設計模式 單例模式

package com.hxh public class hungry public static hungry getinstance public static void main string args start 注意事項 變數hungry必須是 私有,靜態,不可變 構造器私有 公開的get...

01 設計模式 單例模式

package com.hxh public class hungry public static hungry getinstance public static void main string args start 注意事項 變數hungry必須是 私有,靜態,不可變 構造器私有 公開的get...

設計模式 01單例設計模式

所謂類的單例設計模式,就是採取一定的方法保證在整個軟體系統中,對某個類只能存在乙個物件例項,並且該類只提供乙個取得其物件例項的方法 靜態方法 比如hibernate中的sessionfactory,它充當的就是資料儲存源的 並負責建立session物件。sessionfactory並不是輕量級的,一...