Swift में डिज़ाइन पैटर्न: iOS/macOS के लिए उन्नत स्तर

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift में डिज़ाइन पैटर्न: iOS/macOS के लिए उदाहरणों के साथ उन्नत स्तर

\n\n

डिज़ाइन पैटर्न विकास में सामान्य कार्यों के लिए सिद्ध समाधान हैं। iOS और macOS एप्लिकेशन पर काम करने वाले Swift डेवलपर्स के लिए, स्केलेबल, परीक्षण योग्य और रखरखाव योग्य प्रोजेक्ट बनाने के लिए उन्नत पैटर्न में महारत हासिल करना महत्वपूर्ण है। इस लेख में, हम चार प्रमुख पैटर्न का विश्लेषण करेंगे: MVVM, Coordinator, Builder और Factory। उनमें से प्रत्येक विशिष्ट आर्किटेक्चरल समस्याओं को हल करता है और वाणिज्यिक विकास में सक्रिय रूप से उपयोग किया जाता है।

\n\n

1. Swift में MVVM (Model-View-ViewModel) पैटर्न

\n\n

MVVM SwiftUI और UIKit के लिए सबसे लोकप्रिय आर्किटेक्चरल पैटर्न में से एक है। यह प्रस्तुति तर्क और व्यावसायिक तर्क का स्पष्ट पृथक्करण सुनिश्चित करता है, जो कोड के परीक्षण और पुन: उपयोग को सरल बनाता है।

\n\n

MVVM के घटक:

\n
    \n
  • Model — डेटा और व्यावसायिक तर्क (नेटवर्क अनुरोध, डेटाबेस कार्य)।
  • \n
  • View — UI (SwiftUI View या UIViewController)।
  • \n
  • ViewModel — मध्यस्थ, View के लिए डेटा तैयार करता है और उपयोगकर्ता क्रियाओं को संसाधित करता है।
  • \n
\n\n

SwiftUI पर कार्यान्वयन का उदाहरण:

\n\n
import SwiftUI\nimport Combine\n\n// MARK: - Model\nstruct User: Codable {\n    let id: Int\n    let name: String\n    let email: String\n}\n\n// MARK: - ViewModel\nclass UserViewModel: ObservableObject {\n    @Published var users: [User] = []\n    @Published var isLoading = false\n    private var cancellables = Set<AnyCancellable>()\n    \n    func fetchUsers() {\n        isLoading = true\n        guard let url = URL(string: "https://jsonplaceholder.typicode.com/users") else { return }\n        \n        URLSession.shared.dataTaskPublisher(for: url)\n            .map { $0.data }\n            .decode(type: [User].self, decoder: JSONDecoder())\n            .receive(on: DispatchQueue.main)\n            .sink(receiveCompletion: { [weak self] completion in\n                self?.isLoading = false\n                if case .failure(let error) = completion {\n                    print("Error: \\(error)")\n                }\n            }, receiveValue: { [weak self] users in\n                self?.users = users\n            })\n            .store(in: &cancellables)\n    }\n}\n\n// MARK: - View\nstruct UserListView: View {\n    @StateObject private var viewModel = UserViewModel()\n    \n    var body: some View {\n        NavigationView {\n            List(viewModel.users, id: \\.id) { user in\n                VStack(alignment: .leading) {\n                    Text(user.name).font(.headline)\n                    Text(user.email).font(.subheadline).foregroundColor(.secondary)\n                }\n            }\n            .navigationTitle("Users")\n            .overlay {\n                if viewModel.isLoading {\n                    ProgressView()\n                }\n            }\n        }\n        .onAppear {\n            viewModel.fetchUsers()\n        }\n    }\n}
\n\n

MVVM के लाभ:

\n
    \n
  • जिम्मेदारी का स्पष्ट विभाजन।
  • \n
  • UI के बिना ViewModel का आसान परीक्षण।
  • \n
  • Combine या @Published के माध्यम से प्रतिक्रियाशील UI अपडेट।
  • \n
\n\n

2. नेविगेशन के लिए Coordinator (कोऑर्डिनेटर) पैटर्न

\n\n

Coordinator "मोटे" ViewController की समस्या को हल करता है, नेविगेशन तर्क को अलग-अलग ऑब्जेक्ट में स्थानांतरित करता है। यह स्क्रीन के पुन: उपयोग को सरल बनाता है और नेविगेशन को लचीला बनाता है।

\n\n

संरचना:

\n
    \n
  • AppCoordinator — मुख्य कोऑर्डिनेटर, चाइल्ड कोऑर्डिनेटर का प्रबंधन करता है।
  • \n
  • ChildCoordinator — एक विशिष्ट प्रवाह (जैसे, प्रमाणीकरण या मुख्य स्क्रीन) के लिए जिम्मेदार है।
  • \n
\n\n

UIKit के लिए कार्यान्वयन का उदाहरण:

\n\n
import UIKit\n\n// MARK: - Coordinator Protocol\nprotocol Coord                

ब्लॉग

पुस्तक अनुशंसाएँ