設計模式 單例模式

2021-07-16 21:39:49 字數 1375 閱讀 7257

設計模式是有用的抽象工具,用於解決工程和建築等其它領域的設計問題。出於同樣的目的,軟體開發領域借用了這一概念。設計模式是用於解決特定領域發生的特定問題。

單例模式是設計模式的一種。單例模式的使用保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。

單例模式的作用:當乙個『a類』被設計成單例模式時,由『類a』構造出的例項物件之於其它類來講為全域性例項物件,即在每乙個類中由『a』構造出的例項對像,都為相同的物件。

在oc中如何將乙個類設計成單例物件?

1.在被設計成單例物件的類的.h檔案中宣告乙個構造單例方法

2.在.m檔案中實現該方法。

檔案

//引入nscopying協議,防止通過copy產生新的物件

@inte***ce

student : nsobject

//建立乙個類方法

+(student *)shareinstance;

//宣告乙個靜態的例項物件,只會執行一次

static student *stu = nil;

@implementation

student

//實現方法

+(student *)shareinstance

//為了防止alloc 或者new建立新的例項變數

+(id)allocwithzone:(struct _nszone *)zone

}return stu;

}//為了防止copy產生新的物件。需要遵循nscopying協議

-(id)copywithzone:(nszone *)zone

以上三個方法其實時比較單例模式比較固定的寫法。

因為當我們建立物件的時候,我們的方法有:

student *student1 = [[student alloc]init];

student *student2 = [student shareintance];

student *student3 = [student2 copy];

如果不將student類設計成單例類,那麼,這三種方法將建立三個不一樣的物件。而如果使用單例設計模式,則產生的三個物件都是一樣的。輸出結果如下:

單例模式的實現思路:

乙個類只能建立乙個例項(永遠是同乙個人)和乙個獲得該例項的方法(必須是類方法,通常使用getinstance或者shareinstance等名字);當我們呼叫這個方法時,如果乙個類的唯一例項不為空,就返回這個例項,如果乙個類的唯一例項為空就建立該類的例項。

設計模式 單例模式

單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...

設計模式 單例模式

class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...

設計模式 單例模式

單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...