如何編寫簡單的單例模式?

發布 科技 2024-03-14
8個回答
  1. 匿名使用者2024-02-06

    一、基本實施思路:

    單例的實現分為兩個步驟:

    1.將類的建構函式定義為私有方法,使其他地方的**無法通過呼叫類的建構函式來例項化類的物件,而只能通過類提供的靜態方法獲取類的唯一例項;

    2.在類中提供乙個靜態方法,當我們呼叫這個方法時,如果類持有的引用不為空,則返回引用,如果類保留的引用為空,則會建立乙個類的例項,並將例項的引用給出給類保留的引用。

    2、演示如下:

    1. 列舉實現單例:

    2. 惰性執行緒不安全:

    3.懶人執行緒安全:

    4.飢餓的漢式:

    5.雙檢查鎖:

    6. 靜態內部類:

  2. 匿名使用者2024-02-05

    單例模式確保乙個類只有乙個例項,例項化自身,並使其全域性可供整個系統使用。 它不會建立例項的副本,而是返回對儲存在單一例項類中的例項的引用。

    **主要有兩種寫法:

    1.飢餓的漢式風格。

    public class singleton1 ;私有無引數建構函式。

    private static singleton1 instance = new singleton1();

    private static singleton1 getinstance();

    private volatile static singleton2 instance;此外,volite 可防止指令重排。

    private static singleton2 getinstance(){if (instance == null) {

    同步(鎖定可防止多個執行緒生成多個例項。

    if (instance == null) {

    instance = new singleton2();指令被重新排序,賦值首先完成,但建構函式尚未執行。

    return instance;

    仔細檢查,執行緒安全。

  3. 匿名使用者2024-02-04

    一般來說,單例模式有幾種形式:

    public class singleton

    在你自己內在定義乙個你自己的例項不是很奇怪嗎?

    請注意,這是私有的,僅適用於內部通話。

    private static singleton instance = new singleton();

    有乙個靜態方法用於外部訪問類,可以直接訪問。

    public static singleton getinstance()

    可以使用單狀態類進行訪問。

    上面的第二種形式是延遲初始化,這意味著初始單例是第一次呼叫,以後不需要重新生成。

    注意 laty initialization 形式的 synchronized,這個 synchronized 非常重要,如果沒有同步,那麼可以使用 getinstance() 獲取多個單例例項。 關於涉及雙重檢查鎖定 (DCL) 的 Singleton for Lazy Initialization 的討論很多,有興趣的人有興趣進一步研究。

    第一種形式通常被認為更安全。

  4. 匿名使用者2024-02-03

    有五種方法可以實現單例模式:

    1.飢餓模式。 執行緒安全,可呼叫和推斷,無延遲載入。

    2.懶惰模式。 執行緒安全、低效呼叫和延遲載入。

    3.雙檢測鎖定模式。 由於 JVM 的底層模型,偶爾會出現問題,因此不建議使用它。

    4.靜態內部類別。 執行緒安全、可呼叫的效率和延遲載入。

    5. 列舉類。 執行緒安全、可呼叫的效率、延遲載入以及防止呼叫的反射和反序列化。

  5. 匿名使用者2024-02-02

    單例模式旨在避免同一例項生成的模式被重複生成。

    例項占用大量記憶體空間,多個變數指向同乙個物件,可以節省記憶體。

    單例模式的核心:

    施工方法的私有化。 私有化的轉殖方法。 私有化的靜態變數。 面向公眾的靜態方法。 設定三個私人和乙個公共的原因:

    私有化的建設方式只允許使用一套公共的方法,而建丹就是乙個垂直例項。 Kezon 方法的私有化是為了避免使用 public 方法獲取例項,然後通過轉殖來轉殖新物件。 私有化的靜態變數用於儲存類的例項化物件。

    公共靜態方法用於儲存例項化物件以供外部訪問。

  6. 匿名使用者2024-02-01

    單例模式是一種常見的軟體設計模式。 從本質上講,它只包含乙個稱為單例的特殊類。

    擴充套件:1、單例模式的要點:第一,某一類只能有乙個例項; 第二個是它必須自己建立例項; 第三,它必須自己向整個系統提供這個例項。

    二、單例模式的優缺點:

    優點: 1. 例項控制 2.靈活性。

    缺點: 1. 開銷 2.可能的發展混淆 3.物件生存期。

    3.單例模式是最簡單的設計模式形式之一。 此模式的目的是使類的物件成為系統中的唯一例項。 為此,您可以先在客戶端上例項化它。

    因此,需要一種機制,該機制只允許生成物件類的唯一例項,並“阻止”對要生成的所有物件的訪問。 使用工廠方法限制例項化過程。 此方法應該是靜態的(類方法),因為讓類的例項生成另乙個唯一例項是沒有意義的。

  7. 匿名使用者2024-01-31

    單例模式可以說是GOF設計模式中最簡單的一種,也是最受恥辱的一種。 但是,許多類似的評論都讓我印象深刻,認為它是最糟糕的和反模式的。

    該模式本身很簡單,除了關於多執行緒安全問題的一點模糊。 所以,我真的不想討論 gof 提供的模式的參考實現。 我關心的是思考和思考其背後問題的方式。

    我們先來看看單例模式出現的背景。 單例模式就是要確保類只有乙個例項。 好吧,那麼讓我們問一下,為什麼要確保類只有乙個例項?

    其實無非是兩個方面:第一,如果要控制資源的使用,體現在兩個方面,一是通過控制例項的生成來節省資源,二是通過執行緒同步來控制資源的併發訪問; 其次,它旨在用作通訊媒介,允許兩個不相關的程式在不建立直接關係的情況下進行通訊,尤其是多執行緒。 第二點,我說的是抽象的東西,但簡單地說,這就像人們在黑板上討論事情,而不關心誰參與了討論。

    單身人士扮演黑板的角色。

  8. 匿名使用者2024-01-30

    科比·布萊恩特(Kobe Bryant)仍然是詹姆斯(James)的好。

相關回答
2個回答2024-03-14

寫思路:要講好乙個故事,要把握時間、地點、人物、原因、過程、結果六個要素,在此基礎上,才能把故事講得完整透徹,進而做出第一感的表達,讓文章一氣呵成,讓讀者產生共鳴。 >>>More

3個回答2024-03-14

如果你走了,我會流淚愛你。

如果我走了,我會從遠處愛你。 >>>More

10個回答2024-03-14

你絕對沒有任何優點、專長或愛好。 吹吧。 >>>More

10個回答2024-03-14

寫現代詩可以模仿別人寫得好的現代詩,比如寫古詩,借它的語氣,借用它的語言節奏,借用它的修辭手法,借用別人的智慧來豐富自己的作品。 >>>More

5個回答2024-03-14

基本上可以理解為左派是激進的,右派是保守的和落後的。 這種事情都是互相談論,互相攻擊。 沒有明顯的區分和判斷標準。