單例模式是我們平時使用最多的一種設計模式。它的設計目的是為了保證乙個類只有乙個物件例項。單例模式的實現思路為:首先我們需要私有化類的構造器,然後建立乙個該類物件的靜態屬性,對使用者暴露乙個靜態方法來返回該類物件的例項。下面我來介紹一下實現單例模式的幾種方式:
1.餓漢式:
publicclass
singleton ;
public static
singleton getinstance()
}
2.懶漢式(執行緒不安全的):
publicclass
singleton ;
public static
singleton getinstance()
return
singleton.singleton;
}}
3.懶漢式(執行緒安全的)
publicclass
singleton ;
public
static
singleton getinstance()
}return
singleton.singleton;
}}
4.雙重檢查式(使用volatile修飾為了多個執行緒之間可見以及防止指令重排)
publicclass
singleton ;
public
static
singleton getinstance()}}
return
singleton.singleton;
}}
5.靜態**塊:
publicclass
singleton ;
static
public
static
singleton getinstance()
}
6.靜態內部類:
publicclass
singleton ;
static
class
innerstaticclass
public
static
singleton getinstance()
}
7.列舉
publicenum
enumsingleton
}
8.容器式:
publicclass
singletonholder
}public
static
object get(string key)
}
總結:單例是在我們平時開發中經常使用的一種模式,建議使用靜態內部類的方式建立單例效率比較高並且也是執行緒安全的。
static
設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會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...