設計模式是有用的抽象工具,用於解決工程和建築等其它領域的設計問題。出於同樣的目的,軟體開發領域借用了這一概念。設計模式是用於解決特定領域發生的特定問題。
單例模式是設計模式的一種。單例模式的使用保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。
單例模式的作用:當乙個『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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...