1 前言
數學與邏輯學中,singleton定義為“有且僅有一個元素的集合”。因此不管袋子有多大,每次從裡面取出彈子的時候,拿到的都是同一個。
2 詳述
2.1 簡述
面向對象應用程序中的單例類(singleton class)總是返回自己的同一個實例。它提供了對象所提供的資源的全局訪問點。與這類設計相關的設計模式稱為單例模式。
用一種只允許生成對象類的唯一實例的機制,“阻止”所有想要生成對象的訪問。
這個方法應該是靜態方法,因為讓類的實例去生成另一個唯一實例毫無意義。
2.2 何時使用單例模式
(1)類只能有一個實例,並且必須從一個為人熟知的訪問點對其進行訪問,比如工廠方法;
(2)這個唯一的實例只能通過子類化進行擴展,而且擴展的對象不會破壞客戶端代碼。
2.3 單例的原則
(1)發起調用的對象(calling object)不能以其他分配方式實例化單例對象。否則,就有可能創建單例類的多個實例。
(2)對單例對象實例化的限制應用與引用計數內存模型共存。
2.4 Cocoa Touch中常見的單例模式
UIApplication,UIAccelerometer和NSFileManager類。
3 結語
只要應用程序中需要用集中式的類來協助其服務,這個類就應該生成單一的實例,而不是多個實例。
以上是所有內容,希望對大家有所幫助。