設計模式二十三之單例模式

2021-10-22 18:45:23 字數 1313 閱讀 3277

1.什麼是單例模式?

它的核心在於,單例模式可以保證乙個類僅建立乙個例項,並提供乙個訪問它的全域性訪問點。

該模式有三個基本要點:

一是這個類只能有乙個例項;

二是它必須自行建立這個例項;

三是它必須自行向整個系統提供這個例項。

由於在乙個系統中,乙個類經常會被使用在不同的地方,通過單例模式,我們可以避免多次建立多個例項,從而節約系統資源。

2.餓漢模式

在類初始化階段就已經在堆記憶體中開闢了一塊記憶體,用於存放例項化物件,所以也稱為餓漢模式。

漢模式實現的單例的優點是,可以保證多執行緒情況下例項的唯一性,而且 getinstance 直接返回唯一例項,效能非常高。

在類成員變數比較多,或變數比較大的情況下,這種模式可能會在沒有使用類物件的情況下,一直占用堆記憶體。

public class hungersingleton 

public static hungersingleton getinstance()

}

3.懶漢模式

懶漢模式就是為了避免直接載入類物件時提前建立物件的一種單例設計模式。該模式使用懶載入方式,只有當系統使用到類物件時,才會將例項載入到堆記憶體中。

public class lazysingleton 

public static lazysingleton getinstance()

return instance;

}}

多執行緒下,就會出現例項化多個類物件的情況。所以需要在方法上加上 synchronize。但是導致系統效能開銷,從而導致系統效能下降,因此這種方式也會降低單例模式的效能。

public class lazysingleton 

public static synchronized lazysingleton getinstance()

return instance;

}}

雙重鎖模式,降低鎖粒度,減少效能消耗

public class lazydoublechecksingleton 

public static lazydoublechecksingleton getinstance() }}

return instance;

}}

使用內部類特性建立

public class innermethodsingleton 

public static class innersingleton

}}

二十三種設計模式之單例模式

今天我們來共同學習一下,在程式開發過程中,用來提高程式設計效率的二十三種設計模式。這23種設計模式,總共呢可以分為三大類 1 建立型模式 單例模式 singleton 工廠方法模式 factory method 抽象工廠模式 abstract factory 建立者模式 builder 原型模式 p...

Java二十三種設計模式 單例模式

單例模式,簡單的說就是乙個專案中保證只有乙個例項存在,比如乙個遊戲中的小怪獸。精髓 構造私有化,外部類通過單例類公開的乙個方法進行訪問,建立例項。1.用的時候才建立例項,延時載入,稱為懶漢模式 2.類載入時就建立例項,稱為餓漢模式 對比 餓漢模式執行緒安全,簡單明瞭,缺點就是提前生產出一些還沒用的例...

二十三種設計模式(一)單例模式總結

單例模式可以說是23中設計模式中最容易的實現和理解的設計模式了,不過單例模式寫很容易,但是寫好就不容易了,因為單例模式中也隱藏了很多的問題,趁著這次機會,結合網上的一些部落格,對單例模式做了乙個總結。這篇文章對單例模式的大部分問題,都進行了總結描述,並提供了解決方法。接下來還會對其他設計模式進行總結...