Swift Language
डिजाइन पैटर्न - संरचनात्मक
खोज…
परिचय
डिज़ाइन पैटर्न उन समस्याओं का सामान्य समाधान है जो अक्सर सॉफ़्टवेयर विकास में होती हैं। निम्नलिखित संरचना और डिजाइनिंग कोड में मानकीकृत सर्वोत्तम प्रथाओं के टेम्पलेट हैं, साथ ही साथ आम संदर्भों के उदाहरण हैं जिसमें ये डिज़ाइन पैटर्न उपयुक्त होंगे।
संरचनात्मक डिजाइन पैटर्न इंटरफेस और अधिक कार्यक्षमता प्राप्त करने के लिए कक्षाओं और वस्तुओं की संरचना पर ध्यान केंद्रित करते हैं।
अनुकूलक
एडेप्टर का उपयोग किसी दिए गए वर्ग के इंटरफ़ेस को बदलने के लिए किया जाता है, जिसे एडेप्टी के रूप में जाना जाता है, जिसे अन्य इंटरफ़ेस में, लक्ष्य कहा जाता है। लक्ष्य पर संचालन एक ग्राहक द्वारा कहा जाता है, और उन आपरेशनों को एडेप्टर द्वारा अनुकूलित किया जाता है और एडापेटी पर पारित किया जाता है।
स्विफ्ट में, प्रोटोकॉल के उपयोग के माध्यम से अक्सर एडेप्टर का गठन किया जा सकता है। निम्न उदाहरण में, लक्ष्य के साथ संवाद करने में सक्षम ग्राहक को एडेप्टर वर्ग के कार्यों को एक एडाप्टर के उपयोग के माध्यम से करने की क्षमता प्रदान की जाती है।
// The functionality to which a Client has no direct access
class Adaptee {
func foo() {
// ...
}
}
// Target's functionality, to which a Client does have direct access
protocol TargetFunctionality {
func fooBar() {}
}
// Adapter used to pass the request on the Target to a request on the Adaptee
extension Adaptee: TargetFunctionality {
func fooBar() {
foo()
}
}
एक-तरफ़ा एडाप्टर का उदाहरण प्रवाह: Client -> Target -> Adapter -> Adaptee
एडेप्टर भी द्वि-दिशात्मक हो सकते हैं, और इन्हें दो-तरफा एडेप्टर के रूप में जाना जाता है। एक दो-तरफा एडाप्टर उपयोगी हो सकता है जब दो अलग-अलग क्लाइंट को किसी ऑब्जेक्ट को अलग तरीके से देखने की आवश्यकता होती है।
मुखौटा
एक मुखौटा सुव्यवस्थित इंटरफेस के लिए एक एकीकृत उच्च स्तरीय इंटरफ़ेस प्रदान करता है। यह सबसिस्टम की अधिक सामान्य सुविधाओं के लिए सरल, सुरक्षित पहुंच की अनुमति देता है।
निम्नलिखित UserDefaults में वस्तुओं को सेट करने और पुनः प्राप्त करने के लिए उपयोग किए जाने वाले एक मुखौटा का एक उदाहरण है।
enum Defaults {
static func set(_ object: Any, forKey defaultName: String) {
let defaults: UserDefaults = UserDefaults.standard
defaults.set(object, forKey:defaultName)
defaults.synchronize()
}
static func object(forKey key: String) -> AnyObject! {
let defaults: UserDefaults = UserDefaults.standard
return defaults.object(forKey: key) as AnyObject!
}
}
उपयोग निम्नलिखित की तरह लग सकता है।
Defaults.set("Beyond all recognition.", forKey:"fooBar")
Defaults.object(forKey: "fooBar")
साझा उदाहरण तक पहुँचने और UserDefaults को सिंक्रनाइज़ करने की जटिलताएं क्लाइंट से छिपी हुई हैं, और इस इंटरफ़ेस को प्रोग्राम में कहीं से भी एक्सेस किया जा सकता है।