java設計模式 單利模式

2021-08-30 11:41:28 字數 1735 閱讀 8434

**單利模式:**確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項,這個類稱為單例類,它提供全 局訪問的方法。單例模式是一種物件建立型模式。

三個要點:

1、單例類只能有乙個例項。

2、單例類必須自己建立自己的唯一例項。

3、單例類必須給所有其他物件提供這一例項。

使用方法:

在單例類的內部實現只生成乙個例項,同時它提供乙個靜態的getinstance()工廠方法,讓客戶可以訪問它的唯一例項;為了防止在外部對其實例化,將其建構函式設計為私有;在單例類內部定義了乙個singleton型別的靜態物件,作為外部共享的唯一例項。

(1)懶漢單利模式:

執行緒不安全,多執行緒下會建立兩個物件; 在第乙個執行緒進來後,還未將位址值賦值給mysigleton,第一線程結束,

第二線程仍然可以進來建立了兩個物件;

class mysigleton 

//提供乙個全域性的訪問點

public static mysigleton getinstance()

return sigleton;

}}

(2)懶漢單利模式的幾種變種以及存在的問題:

class mysigleton 

// 提供乙個全域性訪問點

public static mysigleton getinstance()

}**第二種:**

// 在單執行緒下效率不高,反覆進鎖出鎖(得進鎖之後才能知道不能建立新的物件)

synchronized (lock)

}**第三種:**

// 多執行緒下會建立兩個物件;

/*在第乙個執行緒進來後,還未將位址值賦值給mysigleton,第一線程結束,第二線程仍然可以進來

建立了兩個物件

*/if (mysigleton==null)

return mysigleton; //返回唯一的乙個物件

}}

(3) 餓漢單利模式:

// 餓漢式單例模式

class mysigleton2

//提供乙個全域性的訪問點

public static mysigleton2 getinstance()

}

(4) 靜態內部類實現單利模式:

// 因為靜態內部類課以定義靜態變數和方法

class mysingleton3

// 只有訪問靜態內部類才會建立物件

private static class signleton

public static mysingleton3 getmysingleton3()

}

(5)雙重校驗鎖

class mysigleton 

// 提供乙個全域性訪問點

public static mysigleton getinstance() }}

return mysigleton;

}

(5)列舉實現單利模式:

public enum singleton   

}

Java設計模式 單利模式

設計模式 是一套被反覆使用,多數人知曉,經過分類編碼目的,設計經驗的總結。目的 使用設計模式是為了提高 重用性,讓 更容易讓人理解,並保證 的可靠性。單利模式 顧名思義就是只能有乙個例項,不能再出現第二個,就如同地球上沒有兩片一模一樣的樹葉一樣。在此處即,乙個類只能有乙個實力,且整個專案都能訪問該例...

java設計模式之單利模式

在我們做開發的時候,有些類的例項每次都new乙個出來是沒有必要的,因為它太占用記憶體咯。因此,單利模式有了它的用武之地了。最簡單的單利模式如下 private static logcathelper instance null public static logcathelper getinstan...

Java設計模式(三) 單利模式

單利模式分為餓漢式和懶漢式,但無論是哪種模式,都是對類的物件來說的,建立類的乙個物件。餓漢式 類載入時就建立物件。懶漢式 需要的時候才建立物件。建立的步驟基本一致 私有化構造方法 定義乙個變數,並私有化 對外提供乙個可以公開獲取物件的方法 public class teacher private s...