स्विफ्ट में डिज़ाइन पैटर्न: iOS/macOS डेवलपर्स के लिए व्यावहारिक मार्गदर्शिका
डिज़ाइन पैटर्न (design patterns) सॉफ्टवेयर डेवलपमेंट में सामान्य समस्याओं के सिद्ध समाधान हैं। iOS/macOS डेवलपर्स के लिए स्विफ्ट में पैटर्न का ज्ञान एक अनिवार्य कौशल है, जो स्केलेबल, परीक्षण योग्य और रखरखाव योग्य एप्लिकेशन बनाने में सक्षम बनाता है। इस लेख में हम वास्तविक कोड उदाहरणों के साथ 4 प्रमुख पैटर्न का विश्लेषण करेंगे।
1. Singleton (एकल)
iOS डेवलपमेंट में सबसे लोकप्रिय पैटर्न में से एक। यह सुनिश्चित करता है कि क्लास का केवल एक इंस्टेंस हो, और उस तक वैश्विक पहुंच प्रदान करता है। इसका उपयोग साझा संसाधनों के प्रबंधन के लिए किया जाता है: UserDefaults, NetworkManager, Database।
स्विफ्ट में Singleton का कार्यान्वयन
class NetworkManager { static let shared = NetworkManager() private init() { } func fetchData(from url: URL) { // अनुरोध का तर्क print("डेटा \\(url) से प्राप्त हुआ") }}
// उपयोगNetworkManager.shared.fetchData(from: URL(string: "https://api.example.com")!)महत्वपूर्ण: स्विफ्ट 5.5+ में थ्रेड सुरक्षा के लिए actor का उपयोग करें:
actor SettingsManager { static let shared = SettingsManager() private var settings: [String: String] = [:] func setValue(_ value: String, forKey key: String) { settings[key] = value } func getValue(forKey key: String) -> String? { return settings[key] }}2. Factory Method (फैक्टरी विधि)
ऑब्जेक्ट बनाने के लिए एक इंटरफ़ेस परिभाषित करता है, लेकिन उपवर्गों को बनाए जाने वाले ऑब्जेक्ट के प्रकार को बदलने की अनुमति देता है। विभिन्न प्रकार के UI घटकों या डेटा मॉडल बनाने के लिए आदर्श।
उदाहरण: विभिन्न प्लेटफार्मों के लिए बटन बनाना
protocol Button { func render()}
class iOSButton: Button { func render() { print("गोल कोनों वाला iOS बटन प्रदर्शित कर रहे हैं") }}
class macOSButton: Button { func render() { print("ग्रेडिएंट वाला macOS बटन प्रदर्शित कर रहे हैं") }}
protocol ButtonFactory { func createButton() -> Button}
class iOSButtonFactory: ButtonFactory { func createButton() -> Button { return iOSButton() }}
class macOSButtonFactory: ButtonFactory { func createButton() -> Button { return macOSButton() }}
// उपयोगlet factory: ButtonFactory = iOSButtonFactory()let button = factory.createButton()button.render() // "गोल कोनों वाला iOS बटन प्रदर्शित कर रहे हैं"3. Observer (प्रेक्षक)
ऑब्जेक्ट को घटनाओं की सदस्यता लेने और परिवर्तनों के बारे में सूचनाएं प्राप्त करने की अनुमति देता है। स्विफ्ट में इसे NotificationCenter, Combine या didSet के माध्यम से कार्यान्वित किया जाता है।
Combine के माध्यम से कार्यान्वयन (iOS 13+)
import Combine
class WeatherStation { @Published var temperature: Double = 0.0 func updateTemperature(_ temp: Double) { temperature = temp }}
class WeatherDisplay { var subscriptions = Set<AnyCancellable>() let station = WeatherStation() func startObserving() { station.$temperature .sink { [weak self] newTemp in print("तापमान बदल गया: \\(newTemp)°C") self?.updateUI(with: newTemp) } .store(in: &subscriptions) } private func updateUI(with temp: Double) { // इंटरफ़ेस अपडेट करना }}प्रोटोकॉल के माध्यम से शास्त्रीय कार्यान्वयन
protocol Observer: AnyObject { func update(value: Int)}
class Subject { private var observers = [Observer]() func attach(_ observer: Observer) { observers.append(observer) } func detach(_ observer: Observer) { observers.removeAll { $0 === obs