Trong khi gần đây làm việc với Objective-C và các thư viện khác nhau được viết trong đó, tôi đã nhận thấy hai mẫu singleton thực sự phổ biến. Một phiên bản tìm nạp cá thể singleton và gọi các phương thức cá thể của nó và phiên bản khác chỉ trưng ra các phương thức lớp và không bao giờ cung cấp cho bạn một cá thể để làm việc. Tất cả đều có mục đích tóm tắt quyền truy cập vào một tài nguyên duy nhất (StoreKit, CoreData, Parse API, v.v.). Ví dụ, đây là cách tiếp cận cũ được sử dụng trong MKStoreKit:Singleton Instance vs Class Methods
// initialize singleton during app boot
[MKStoreManager sharedManager]
// sometime later in the app
[[MKStoreManager sharedManager] buyFeature:kFeatureAId
onComplete:^(NSString* purchasedFeature)
{
NSLog(@"Purchased: %@", purchasedFeature);
}
onCancelled:^
{
NSLog(@"User Cancelled Transaction");
}];
hoặc cách khác NSUserDefaults, UIApplication vv .. Cách tiếp cận khác có thể được nhìn thấy trong MagicalRecord hoặc ở đây với Parse API:
// configure API credentials sometime during app boot
[Parse setApplicationId:@"123456"
clientKey:@"123456"];
// sometime later
PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];
[testObject setObject:@"bar" forKey:@"foo"];
[testObject save];
là gì số ưu và khuyết điểm của hai cách tiếp cận và là một trong số chúng về cơ bản tốt hơn so với phương pháp khác?
Không phải truy xuất thể hiện được chia sẻ tiết kiệm một số thuộc tính màn hình (sự khác biệt hiệu suất có thể không thích hợp), nhưng tôi có vặn bản thân theo một cách khác, ví dụ, kiểm thử khôn ngoan không?
Cảm ơn!
Câu trả lời hay, cảm ơn! –
Câu trả lời hay nhưng một ví dụ nhỏ sẽ làm cho nó dễ hiểu hơn nhiều. – atulkhatri