單例模式
**什麼時候使用單例模式:**
在乙個工程中,一些類只需要乙個例項變數,我們就可以將這些類設計成單例模式
**單例模式的作用?**
當乙個'類a'被設計成單例模式時,有'類a'構造出的例項物件之於其他類來講為全域性例項物件.即在每乙個類中由'a'構造出的例項物件,都未相同的物件.
**在oc中如何將乙個類設計成單例模式**
1.在要被設計成單例的類的.h檔案中宣告乙個構造單例方法
2.實現該方法
建立個student 類
在student.h 檔案中給個方法:
#import
@inte***ce
student : nsobject
+(student *)shareinstance;
end
在student.m 檔案
#import
"student.h"
//宣告乙個靜態的例項物件,只會在第一次執行
static student *st = nil;
@implementation student
//實現該方法
+(student *)shareinstance
return st;
}//為了防止alloc 或new 建立新的例項變數
+(id)allocwithzone:(struct _nszone *)zone
return st;
}}//為了防止copy產生新的物件,需要遵循nscopying
-(id)copywithzone:(nszone *)zone
@end
回到控制器
student *student1 =[student shareinstance];
student *student2=[[student alloc]init];
student *student3=[student new];
student *student4 =[student3 copy];
nslog(@"
%p,%p,%p,%p
",student1,student2,student3,student4);
這就是單例模式..
~~~創個新的工程.
委託模式:
兩個物件間不能夠直接聯絡,需要通過乙個第三方物件,幫助它們聯絡,這一種模式,我們稱之為』委託模式』.
例如:』房東』 –』委託』—>』中介』–』賣方』–>』消費者』
建立2個類 房東類(landlord)和中介類(housesaier).和建立乙個中介的委託.
在委託中給兩個方法;
#import
@protocol
landlordprotocol
-(void)mustsalehhouse;//賣房的方法
-(void)paymoney; //給錢的方法
@end
在housesaier.h檔案.匯入需要的標頭檔案和委託
#import
#import "landlordprotocol.h"
#import "landlord.h"
@inte***ce
housesaier : nsobject
@property(nonatomic,strong)landlord *landlord;
@end
在housesaier.m檔案實現
#import "housesaier.h"
@implementation
housesaier
-(void)mustsalehhouse
-(void)paymoney
@end
回到landlord.h檔案中
#import
#import "landlordprotocol.h"
@inte***ce
landlord : nsobject
//這裡使用assign 或者 weak 是為了防止迴圈引用
@property(nonatomic,assign)id
delegate;
-(void)registerhouse;
//表示房東收到錢了
-(void)receivemoney;
@end
landlord.m檔案
#import "landlord.h"
@implementation
landlord
-(void)registerhouse
}-(void)receivemoney
@end
所有的方法都寫完了就去控制器實現吧~~
#import
"viewcontroller.h"
#import
"landlord.h"
#import
"housesaier.h"
@inte***ce viewcontroller ()
@end
@implementation viewcontroller
- (void)viewdidload {
[super viewdidload];
landlord *landlord =[[landlord alloc]init];
housesaier *housesaier =[housesaier new];
landlord.delegate = housesaier;
housesaier.landlord =landlord;
[landlord registerhouse];
OC中的單例模式和委託模式
單例模式是設計模式的一種,主要的作用是用於設計約束或者為了控制對有限資源的訪問 首先新建乙個類,在類中新增單例 類名 方法名 通常share,defluat等開頭 在.m檔案中建立全域性靜態例項 static 類名 st nil 賦值nil 類名 方法名 return st id allocwith...
oc單例模式
1 單例模式概念 1 什麼是單例模式 singleton 單例模式的意圖是是的類的物件成為系統中唯一的例項,提供乙個訪問點,供客戶類 共享資源。2 什麼情況下使用單例?1 類只能有乙個例項,而且必須從乙個為人熟知的訪問點對其進行訪問,比如工廠方法。2 這個唯一的例項只能通過子類化進行擴充套件,而且擴...
OC 單例模式
設計模式 用來解決某一特定問題 單例模式 什麼時候使用單例模式?在工程中,一些類只需要乙個例項變數,我們就可以將這些類設計成單例模式 單例模式的作用?當乙個類a被設計成單例模式時,由類a構造出的例項物件之於其他類來說為全域性例項物件,即在每乙個類中由類a構建的例項物件 都是同乙個物件 在oc中如何將...