文章目錄
- 前不久遇到一個面試題,讓我new只有一個執行個體的類對象,我一時沒有轉過彎來,回來上google一查,悟,這可以變相的用單態模式解答。
前不久遇到一個面試題,讓我new只有一個執行個體的類對象,我一時沒有轉過彎來,回來上google一查,悟,這可以變相的用單態模式解答。
關鍵字: singleton
Singleton模式主要作用是保證在Java應用程式中,一個類Class只有一個執行個體存在。
一般Singleton模式通常有幾種種形式:
第一種形式: 定義一個類,它的建構函式為private的,它有一個static的private的該類變數,在類初始化時執行個體話,通過一個public的getInstance方法擷取對它的引用,繼而調用其中的方法。 Java代碼
- public
class
Singleton {
-
private
Singleton(){}
-
//在自己內部定義自己一個執行個體
-
//注意這是private 只供內部調用
-
private
static
Singleton instance =
new
Singleton();
-
//這裡提供了一個供外部存取本class的靜態方法,可以直接存取
-
public
static
Singleton getInstance() {
-
return
instance;
- }
- }
public class Singleton { private Singleton(){} //在自己內部定義自己一個執行個體 //注意這是private 只供內部調用 private static Singleton instance = new Singleton(); //這裡提供了一個供外部存取本class的靜態方法,可以直接存取 public static Singleton getInstance() { return instance; } }
第二種形式: Java代碼
- public
class
Singleton {
-
private
static
Singleton instance =
null
;
-
public
static
synchronized
Singleton getInstance() {
-
//這個方法比上面有所改進,不用每次都進行產生對象,只是第一次
-
//使用時產生執行個體,提高了效率!
-
if
(instance==
null
)
- instance=
new
Singleton();
-
return
instance;
- }
- }
public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //這個方法比上面有所改進,不用每次都進行產生對象,只是第一次 //使用時產生執行個體,提高了效率! if (instance==null) instance=new Singleton(); return instance; } }
其他形式:
定義一個類,它的建構函式為private的,所有方法為static的。
一般認為第一種形式要更加安全些