Swift में उन्नत डिज़ाइन पैटर्न: सिद्धांत से व्यवहार तक
डिज़ाइन पैटर्न केवल अमूर्त अवधारणाएँ नहीं हैं, बल्कि सामान्य समस्याओं के समय-परीक्षित समाधान हैं। यदि आपने पहले से ही बुनियादी पैटर्न (Singleton, Delegate, MVC) में महारत हासिल कर ली है और जटिल iOS/macOS एप्लिकेशन पर काम कर रहे हैं, तो अगले स्तर पर जाने का समय आ गया है। इस लेख में, हम चार उन्नत पैटर्न पर चर्चा करेंगे: Builder, Strategy, Observer (Combine के माध्यम से) और Coordinator। प्रत्येक पैटर्न को Swift में वास्तविक कोड और मौजूदा प्रोजेक्ट्स में एकीकरण के सुझावों के साथ चित्रित किया जाएगा।
1. Builder (बिल्डर) — जटिल ऑब्जेक्ट्स का लचीला कॉन्फ़िगरेशन
Builder पैटर्न कई वैकल्पिक पैरामीटर वाले ऑब्जेक्ट बनाने के लिए आदर्श है। दर्जनों पैरामीटर वाले लंबे इनिशियलाइज़र के बजाय, आप चरण-दर-चरण निर्माण का उपयोग करते हैं।
उदाहरण: UIAlertController का कॉन्फ़िगरेशन
class AlertBuilder { private var title: String? private var message: String? private var actions: [UIAlertAction] = [] private var preferredStyle: UIAlertController.Style = .alert
func setTitle(_ title: String) -> AlertBuilder { self.title = title return self }
func setMessage(_ message: String) -> AlertBuilder { self.message = message return self }
func addAction(title: String, style: UIAlertAction.Style = .default, handler: ((UIAlertAction) -> Void)? = nil) -> AlertBuilder { let action = UIAlertAction(title: title, style: style, handler: handler) actions.append(action) return self }
func setStyle(_ style: UIAlertController.Style) -> AlertBuilder { self.preferredStyle = style return self }
func build() -> UIAlertController { let alert = UIAlertController(title: title, message: message, preferredStyle: preferredStyle) actions.forEach { alert.addAction($0) } return alert }}
// उपयोगlet alert = AlertBuilder() .setTitle("त्रुटि") .setMessage("डेटा लोड करने में विफल") .addAction(title: "ठीक है", style: .default) .addAction(title: "पुनः प्रयास करें", style: .cancel) .build()present(alert, animated: true)कब उपयोग करें: कॉन्फ़िगरेटर, जटिल ViewController या बड़ी संख्या में विकल्पों वाले डेटा मॉडल बनाते समय।
2. Strategy (स्ट्रैटेजी) — चलते-फिरते एल्गोरिदम बदलना
Strategy पैटर्न एल्गोरिदम के एक परिवार को अलग करने और उन्हें विनिमेय बनाने की अनुमति देता है। यह भुगतान प्रसंस्करण, डेटा सत्यापन या रेंडरिंग के लिए विशेष रूप से उपयोगी है।
उदाहरण: सामग्री फ़िल्टरिंग सिस्टम
protocol FilterStrategy { func apply(to items: [String]) -> [String]}
class AlphabeticalFilter: FilterStrategy { func apply(to items: [String]) -> [String] { return items.sorted() }}
class LengthFilter: FilterStrategy { func apply(to items: [String]) -> [String] { return items.filter { $0.count > 5 } }}
class ContentManager { private var strategy: FilterStrategy
init(strategy: FilterStrategy) { self.strategy = strategy }
func setStrategy(_ strategy: FilterStrategy) { self.strategy = strategy }
func filter(items: [String]) -> [String] { return strategy.apply(to: items) }}
// उपयोगlet manager = ContentManager(strategy: AlphabeticalFilter())let data = ["Swift", "Objective-C", "Kotlin", "Java", "Python"]print(manager.filter(items: data)) // ["Java", "Kotlin", "Objective-C", "Python", "Swift"]
manager.setStrategy(LengthFilter())print(manager.filter(items: data)) // ["Objective-C", "Python"]सुझाव: उपयोगकर्ता सेटिंग्स के आधार पर रणनीति चुनने के लिए Strategy को फ़ैक्टरी विधि के साथ संयोजित करें।