iOS 單例設計模式

2021-08-15 15:57:46 字數 1315 閱讀 2153

//

聯絡人:

石虎暱稱

:嗡嘛呢叭咪哄

一、概念

單例模式(singleton)也叫單態模式,是設計模式中最為簡單的一種模式

1.單例的作用

整個應用或系統只能有該類的乙個例項,即是在整個專案中,這個類的物件只能被初始化一次。單例類保證了應用程式的生命週期中有且僅有乙個該類的例項物件,而且易於外界訪問。

2.ios單例模式應用場景

單例模式優缺點(不僅限於ios開發)

使用簡單、延時求值、易於跨模組

3.記憶體占用與執行時間

對比使用單例模式和非單例模式的例子,在記憶體占用與執行時間存在以下差距:

(1) 單例模式:單例模式每次獲取例項時都會先進行判斷,看該例項是否存在——如果存在,則返回;否則,則建立例項。因此,會浪費一些判斷的時間。但是,如果一直沒有人使用這個例項的話,那麼就不會建立例項,節約了記憶體空間。

(2) 非單例模式:當類載入的時候就會建立類的例項,不管你是否使用它。然後當每次呼叫的時候就不需要判斷該例項是否存在了,節省了執行的時間。但是如果該例項沒有使用的話,就浪費了記憶體。

4.執行緒的安全性

(1) 從執行緒的安全性上來講,不加同步的單例模式是不安全的。比如,有兩個執行緒,乙個是執行緒a,另外乙個是執行緒b,如果它們同時呼叫某乙個方法,那就可能會導致併發問題。在這種情況下,會建立出兩個例項來,也就是單例的控制在併發情況下失效了。

(2) 非單例模式是執行緒安全的,因為程式保證只載入一次,在載入的時候不會發生併發情況。

(3) 單例模式如果要實現執行緒安全,只需要加上synchronized即可。但是這樣一來,就會減低整個程式的訪問速度,而且每次都要判斷,比較麻煩。

(4) 雙重檢查加鎖:為了解決(3)的繁瑣問題,可以使用「雙重檢查加鎖」的方式來實現,這樣,就可以既實現執行緒安全,又能使得程式效能不受太大的影響。

單例模式會阻止其它物件例項化其自己的物件的副本,從而確保所有物件都訪問唯一例項。

因為單例模式的類控制了例項化的過程,所以類可以更加靈活修改例項化過程。

注意:我們在使用單例類之前,一定要考慮好單例類是否適合和類以後的擴充套件性,避免盲目濫用單例

謝謝!!!

iOS設計模式 單例

備註 只能通過類的類方法才能建立單例類的例項,類名 alloc init 建立例項沒有用的。原理圖 1.單例模式人人用過,嚴格的單例模式很少有人用過 2.嚴格的單例模式指的是無法通過常規的 alloc init 方法來生成物件,派生出來的子類也不能產生出物件,而只能通過單例的方法獲取到物件原始碼 s...

IOS設計模式 單例設計模式

在軟體工程中,單例是一種用於實現單例的數學概念,即將類的例項化限制成僅乙個物件的設計模式。或者我的理解是 單例是一種類,該類只能例項化乙個物件。有些變數只需要初始化一次 如從檔案中讀取配置引數,讀取裝置型號等等 可以使用dispatch once來進行讀取優化,保證只呼叫api一次,以後就只要直接訪...

iOS設計模式 單例模式

單例模式用於當乙個類只能有乙個例項的時候,通常情況下這個 單例 代表的是某乙個物理裝置比如印表機,或是某種不可以有多個例項同時存在的虛擬資源或是系統屬性比如乙個程式的某個引擎或是資料。用單例模式加以控制是非常有必要的。1.封裝乙個共享的資源 2.提供乙個固定的例項建立方法 3.提供乙個標準的例項訪問...