單例模式其實很簡單,就是將建構函式私有化,然後通過自定義乙個方法來獲得類的例項。單利模式分為餓漢模式、懶漢模式
public
class singletonhungry
private
static singletonhungry instance = new singletonhungry();
public
static singletonhungry getinstance()
}
public
class singletonfull
private
static singletonfull instance;
public
static singletonfull getinstance()
return instance;
}}
控制台輸出:s1和s2是同乙個例項public
class test */
//懶漢模式
singletonfull s1 = singletonfull.getinstance();
singletonfull s2 = singletonfull.getinstance();
if(s1 == s2)
}}
餓漢模式與懶漢模式的區別餓漢模式:在類載入的時候就新建了例項,所以類載入速度比較慢,但程式執行速度比較快,因為是靜態的初始例項,所以是執行緒安全的。懶漢模式如何實現執行緒安全?懶漢模式:在需要的時候再新建例項,所以類載入速度比較快,但程式執行速度比較慢(也只是第一次獲取例項時)。由於類載入的是並沒有new 例項,所以當多執行緒的時候,可能同時new 多個例項,所以是執行緒不安全的。
有三種方法第二種方法是給new 例項加上同步鎖第一種方法是給獲取例項的方法加上同步鎖
public
class singletonfull
private
static singletonfull instance;
public
static synchronized singletonfull getinstance()
return instance;
}}
第三種方法是雙重校驗鎖,結合第一種和第二種方法public
class singletonfull
private
static singletonfull instance;
public
static singletonfull getinstance()
}return instance;
}}
public
class
singletonfull
private
static singletonfull instance;
public
static
synchronized singletonfull getinstance()
}return instance;
}}
設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...
設計模式之單例模式
package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...
設計模式之 單例模式
單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...