यह लेख किसी ऐसे व्यक्ति के लिए लक्षित है, जो पहली बार डिजाइन पैटर्न की अवधारणा का सामना कर रहा है, जिसने सिंगलटन शब्द सुना है , या किसी तरह सिंगलटन पैटर्न को लागू किया है, लेकिन यह नहीं समझ पाया कि क्या हो रहा है। स्वागत! CodeGym के छात्रों को पहली बार स्तर 15 पर डिजाइन पैटर्न का सामना करना पड़ता है, जब कप्तान अप्रत्याशित रूप से उनसे आलसी कार्यान्वयन के साथ जावा सिंगलटन पैटर्न को लागू करके अपनी समझ को "मजबूत" करने के लिए कहते हैं। पहली बार सिंगलटन पैटर्न के बारे में सुनने वाले छात्रों के पास तुरंत बहुत सारे प्रश्न होते हैं: दुनिया में डिज़ाइन पैटर्न क्या है? हमें इसकी जरूरत क्यों है? सिंगलटन क्या है ? और अंत में, आलसी क्रियान्वयन क्या है? आइए इन सवालों के जवाब क्रम से दें।
और सिंगलटन पैटर्न उनमें से सिर्फ एक है।
उदाहरण के लिए, आप ब्लैकजैक और संख्याओं के साथ अपना खुद का सॉर्टिंग एल्गोरिद्म बना सकते हैंऔर ऐसा करने में बहुत समय व्यतीत करें, या आप उस एक को लागू कर सकते हैं जिसे लंबे समय से समझा और वर्णित किया गया है। डिजाइन पैटर्न के साथ भी यही सच है। इसके अतिरिक्त, डिज़ाइन पैटर्न के साथ, कोड अधिक मानक बन जाता है, और उपयुक्त पैटर्न का उपयोग करते समय, आपसे गलतियाँ होने की संभावना कम होती है, क्योंकि पैटर्न के सामान्य नुकसान की पहचान की गई थी और बहुत पहले ही समाप्त कर दी गई थी। बाकी सब चीजों के ऊपर, पैटर्न का ज्ञान प्रोग्रामरों को एक दूसरे को बेहतर ढंग से समझने में मदद करता है। आप अपने साथी प्रोग्रामरों को लंबी व्याख्या देने की कोशिश करने के बजाय बस एक पैटर्न का नाम बोल सकते हैं। संक्षेप में, डिजाइन पैटर्न आपकी मदद करते हैं:
इस खंड को समाप्त करने के लिए, हम ध्यान दें कि डिज़ाइन पैटर्न के पूरे शरीर को तीन बड़े समूहों में विभाजित किया जा सकता है:
डिज़ाइन पैटर्न दुनिया में क्या है?
मेरा मानना है कि इस प्रश्न का सर्वोत्तम समझ के साथ उत्तर देने के लिए थोड़ा इतिहास है। चार प्रसिद्ध प्रोग्रामिंग लेखक (एरिच गामा, जॉन व्लिससाइड्स, राल्फ जॉनसन और रिचर्ड हेल्म) हैं जो एक दिलचस्प विचार लेकर आए हैं। उन्होंने देखा कि सॉफ़्टवेयर विकास के लिए अक्सर उन्हें लगभग समान समस्याओं को हल करने और उसी तरह से संरचित कोड लिखने की आवश्यकता होती है। इसलिए उन्होंने विशिष्ट पैटर्न का वर्णन करने का निर्णय लिया, जिन्हें अक्सर ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में उपयोग करने की आवश्यकता होती है। उनकी पुस्तक 1994 में डिजाइन पैटर्न: एलिमेंट्स ऑफ रियूजेबल ऑब्जेक्ट-ओरिएंटेड सॉफ्टवेयर शीर्षक के तहत प्रकाशित हुई थी। पुस्तक का नाम बहुत लंबा हो गया और लोग इसे केवल गैंग ऑफ फोर की पुस्तक कहने लगे। पहले संस्करण में 23 पैटर्न शामिल थे। बाद में, दर्जनों अन्य पैटर्न खोजे गए।एक डिज़ाइन पैटर्न एक सामान्य समस्या का एक मानकीकृत समाधान है। |
हमें डिज़ाइन पैटर्न की आवश्यकता क्यों है?
आप पैटर्न जाने बिना प्रोग्राम कर सकते हैं: आखिरकार, स्तर 15 तक, आप CodeGym पर पहले ही सैकड़ों मिनी-प्रोग्राम लिख चुके होते हैं, बिना यह जाने कि वे मौजूद हैं। इससे पता चलता है कि डिज़ाइन पैटर्न एक प्रकार का उपकरण है जिसका उपयोग मास्टर को शौकिया से अलग करता है: डिज़ाइन पैटर्न वर्णन करता है कि किसी विशिष्ट समस्या को ठीक से कैसे हल किया जाए। इसका मतलब है कि पैटर्न जानने से आपका समय बचता है। इस तरह, वे एल्गोरिदम के समान हैं।
|
अंत में, सिंगलटन पैटर्न
सिंगलटन एक रचनात्मक पैटर्न है । यह पैटर्न सुनिश्चित करता है कि एक वर्ग का केवल एक ही उदाहरण है और इस वस्तु के लिए एक वैश्विक पहुँच बिंदु प्रदान करता है। विवरण से, यह स्पष्ट होना चाहिए कि यह पैटर्न दो मामलों में लागू किया जाना चाहिए:- जब आपके प्रोग्राम के लिए आवश्यक है कि किसी विशेष वर्ग की एक से अधिक वस्तु नहीं बनाई जानी चाहिए। उदाहरण के लिए, एक कंप्यूटर गेम में हीरो क्लास और केवल एक हीरो ऑब्जेक्ट हो सकता है जो गेम में एकमात्र हीरो का वर्णन करता है।
- जब आपको किसी वस्तु तक वैश्विक पहुँच के लिए एक बिंदु प्रदान करने की आवश्यकता होती है। दूसरे शब्दों में, आपको प्रोग्राम में कहीं से भी वस्तु उपलब्ध कराने की आवश्यकता है। काश, यह केवल एक वैश्विक चर बनाने के लिए पर्याप्त नहीं है, क्योंकि यह लेखन-संरक्षित नहीं है: कोई भी चर के मान को बदल सकता है, इसलिए वस्तु का वैश्विक पहुंच बिंदु खो सकता है। सिंगलटन के ये गुण आवश्यक हैं, उदाहरण के लिए, जब आपके पास एक ऑब्जेक्ट है जो डेटाबेस के साथ काम करता है, और आपको प्रोग्राम के विभिन्न हिस्सों से डेटाबेस तक पहुंचने की आवश्यकता होती है। एक सिंगलटन यह सुनिश्चित करेगा कि कोई भी ऐसा कोड न लिखे जो पहले बनाए गए उदाहरण को बदल दे।
-
लेज़ी इनिशियलाइज़ेशन के साथ सिंगलटन का एक उदाहरण खोजें ।
-
एक ही सिद्धांत का उपयोग करके अलग-अलग फाइलों में तीन सिंगलटन वर्ग - सूर्य, चंद्रमा, पृथ्वी - बनाएं।
-
अमल में लानाग्रहसूर्य , चंद्रमा और पृथ्वी कक्षाओं में इंटरफ़ेस ।
- समाधान वर्ग के स्थिर ब्लॉक में कॉल करेंreadKeyFromConsoleAndInitPlanetतरीका।
-
लागू करेंreadKeyFromConsoleAndInitPlanetविधि कार्यक्षमता:
-
5.1। कंसोल से एक स्ट्रिंग पैरामीटर पढ़ें
-
5.2। यदि पैरामीटर एक के बराबर हैग्रहइंटरफ़ेस के स्थिरांक, उपयुक्त ग्रह वस्तु बनाएँ।
-
-
आपको कक्षा को एक निजी स्थिर क्षेत्र देने की आवश्यकता है जो एक वस्तु को संग्रहीत करता है:
public class LazyInitializedSingleton { private static LazyInitializedSingleton instance; // #1 }
-
(डिफ़ॉल्ट) कन्स्ट्रक्टर को निजी बनाएं। इसका मतलब है कि इसे कक्षा के बाहर नहीं पहुँचा जा सकता है और यह नई वस्तुओं को वापस करने में सक्षम नहीं होगा:
public class LazyInitializedSingleton { private static LazyInitializedSingleton instance; private LazyInitializedSingleton(){} // #2 }
-
एक स्थिर निर्माण विधि की घोषणा करें जिसका उपयोग सिंगलटन प्राप्त करने के लिए किया जाएगा:
public class LazyInitializedSingleton { private static LazyInitializedSingleton instance; private LazyInitializedSingleton() {} public static LazyInitializedSingleton getInstance() { // #3 if (instance == null) { // If the object has not yet been created instance = new LazyInitializedSingleton(); // Create a new object } return instance; // Return the previously created object } }
GO TO FULL VERSION