हाल ही में उद्देश्य-सी और इसमें लिखे विभिन्न पुस्तकालयों के साथ काम करते हुए, मैंने दो वास्तव में लोकप्रिय सिंगलटन पैटर्न देखा है। एक संस्करण सिंगलटन इंस्टेंस प्राप्त करता है और इसकी आवृत्ति विधियों को कॉल करता है और अन्य संस्करण केवल क्लास विधियों का खुलासा करता है और आपको कभी भी काम करने का उदाहरण नहीं देता है। सभी को एक ही संसाधन (स्टोरकिट, कोरडाटा, पार्स एपीआई इत्यादि) तक पहुंच का सार बनाने का उद्देश्य है।सिंगलटन इंस्टेंस बनाम कक्षा के तरीके
// 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");
}];
या वैकल्पिक रूप से NSUserDefaults, UIApplication आदि .. अन्य दृष्टिकोण MagicalRecord में या यहाँ पार्स एपीआई के साथ देखा जा सकता है: उदाहरण के लिए, यहाँ MKStoreKit में प्रयोग किया जाता पूर्व दृष्टिकोण है
कुछ// 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];
क्या हैं दो दृष्टिकोणों के पेशेवरों और विपक्ष और उनमें से एक मूल रूप से दूसरे की तुलना में बेहतर है?
साझा उदाहरण को पुनर्प्राप्त करने के लिए कुछ स्क्रीन एस्टेट सहेजना नहीं है (प्रदर्शन अंतर संभवतः अप्रासंगिक है), लेकिन क्या मैं खुद को किसी अन्य तरीके से खराब कर रहा हूं, उदाहरण के लिए, टेस्टेबिलिटी-वार?
धन्यवाद!
ग्रेट उत्तर, धन्यवाद! –
अच्छा जवाब लेकिन एक छोटा सा उदाहरण इसे समझने के लिए और अधिक आसान बना देगा। – atulkhatri