जोंफैक्स आदेश राज्य अपरिवर्तनीय
मैं अकसर स्टेटलेस और अपरिवर्तनीय शब्द सुनता हूं उदाहरण के लिए, HTTP एक स्टेटलेस प्रोटोकॉल है, और स्ट्रिंग ऑब्जेक्ट एक अपरिवर्तनीय ऑब्जेक्ट है। लेकिन मेरे पास एक कठिन समय है, जो दोनों के बीच के अंतर को समझते हैं। जब मैं एक स्टेटलेस ऑब्जेक्ट बनाऊं, तो यह किसी भी स्टेट डेटा को आंतरिक रूप से संग्रहीत नहीं करता है और अगर मैं एक अपरिवर्तनीय वस्तु बना, इसका मतलब है कि इसकी कभी भी बदली नहीं होगी। क्या इसका अर्थ यह नहीं है कि अस्थायी वस्तु बदलने से, परिभाषा के अनुसार यह एक राज्य नहीं हो सकता। यही वह हमेशा के लिए है और अगर किसी वस्तु में राज्य नहीं होता है, तो इसे बदल कर नहीं किया जा सकता (परिभाषा के अनुसार)। इस प्रकार, सभी स्टेटलेस ऑब्जेक्ट अपरिवर्तनीय और अपरिवर्तनीय ऑब्जेक्ट स्टेटलेस नहीं हैं अस्थिर stateless ऑब्जेक्ट या अपरिवर्तनीय राज्यपूर्ण ऑब्जेक्ट का एक उदाहरण क्या हो सकता है कैसे एक ऑब्जेक्ट की कोई स्थिति नहीं हो सकती है यहां तक कि अगर आप सबसे बुनियादी ऑब्जेक्ट को इन्स्तांत करते हैं, तो इसमें कुछ राज्य होता है उदाहरण के लिए जावा में सबसे सरल वस्तु कल्पना है, जिसमें राज्य शामिल होगा। अन्य बातों के बीच अपनी कक्षा का संदर्भ। क्या किसी भी भाषा में वास्तव में स्टेटलेस ऑब्जेक्ट प्राप्त करना संभव है ndash toniedzwiedz 28 जनवरी, 9:24 पर संदर्भ महत्वपूर्ण है और यहां दो असंबंधित अवधारणाएं हैं। HTTP एक स्टेटलेस प्रोटोकॉल का अर्थ है कि प्रत्येक अनुरोध में अन्य अनुरोधों का कोई निहित ज्ञान नहीं है उसी ग्राहक द्वारा भेजे गए किसी भी पिछले अनुरोध सहित यह एक प्रोटोकॉल जैसे एफ़टीपी या एसएमटीपी से भिन्न होता है, जहां कनेक्शन स्थापित होता है और फिर अलग-अलग आज्ञाएं भेजी जाती हैं - प्रत्येक आदेश की पुष्टि एक ही ग्राहक कनेक्शन से जुड़ी होती है। बेशक स्टेटैट्रैकिंग को वापस जोड़ दिया जाता है। कुकीज़ और ट्रैकिंग यूआरआई, और यहां तक कि पाइपलाइनिंग भी - लेकिन यह मुद्दा यह है कि प्रत्येक अनुरोध नया और अलग है HTTP प्रोटोकॉल में। स्ट्रिंग एक अपरिवर्तनीय ऑब्जेक्ट का अर्थ है कि विशेष ऑब्जेक्ट्स डेटा हर समान तरीके से हमेशा से समान होगा (यह भी दर्शाता है कि अवलोकनत्मक गुणों को परिवर्तित नहीं किया जा सकता है) कुछ शुद्धवादियों का यह तर्क हो सकता है कि इससे इसके गहरा प्रभाव पड़ता है, लेकिन व्यावहारिक रूप में व्यावहारिक रूप से अवलोकनत्मक विशेषताओं के बारे में है - यह मुद्दा अधिक जटिल हो जाता है जब अपरिवर्तनीय वस्तुओं में अस्थिर वस्तुएं हो सकती हैं (और हाँ, तकनीकी रूप से, कोई अनुमति प्राप्त डेटा के साथ एक वस्तु - या राज्य - रद्द नहीं किया जा सकता है और इस प्रकार अपरिवर्तनीय है। हालांकि, एक बार फिर, संदर्भ महत्वपूर्ण है और इसके बारे में बात करने के लिए एक हाथी पर फेंग या बाघ पर ट्रंक। ) संपादित करें: दो के बीच का अंतर एक वस्तु जिसके पास कोई राज्य नहीं है वह राज्यविहीन है सभी स्टेटलेस ऑब्जेक्ट्स अपरिवर्तनीय हैं (चूंकि उत्परिवर्तनीय नहीं है) यह एक सैद्धांतिक टेक्निकलिटी है एक वस्तु राज्य हो सकती है और फिर भी अपरिवर्तनीय हो सकती है - हालांकि, राज्य के साथ एक वस्तु (अपरिवर्तनीय या अन्यथा) अब स्टेटलेस नहीं माना जा सकता है। जुड़े उत्तर पर टिप्पणी के अनुसार एक अपरिवर्तनीय वस्तु में एक राज्य है, प्रारंभिक राज्य। लॉरेंटबार्गॉल्ट-रॉय एक वस्तु जिसके पास कोई राज्य नहीं है वह राज्यविहीन है। सभी स्टेटलेस ऑब्जेक्ट्स अपरिवर्तनीय हैं (चूंकि उत्परिवर्तनीय नहीं है) यह एक सैद्धांतिक टेक्निकलिटी है एक वस्तु राज्य हो सकती है और फिर भी अपरिवर्तनीय हो सकती है - हालांकि, राज्य के साथ एक वस्तु (अपरिवर्तनीय या अन्यथा) अब स्टेटलेस नहीं माना जा सकता है। जुड़े उत्तर पर टिप्पणी के अनुसार: कोटेशन अपरिवर्तनीय ऑब्जेक्ट में वास्तव में एक स्टेटक्वाट है, प्रारंभिक स्टेट। ndash user166390 अक्टूबर 19 12 20:04 आह, अब मैं देख रहा हूँ क्या यह कहना सही होगा कि स्टेटलेस ऑब्जेक्ट अपरिवर्तनीय ऑब्जेक्ट्स का सबसेट हैं, एक ही रोचक संपत्ति के साथ (सुरक्षित रूप से थ्रेडेड कोड में इस्तेमाल किया जा सकता है, भविष्य में बदलने की गारंटी नहीं है, आदि), लेकिन अपने स्वयं के कुछ अतिरिक्त गुणों के साथ ( जैसा कि एक ही वर्ग के किसी भी उदाहरण पर बुलाया गया एक तरीका हमेशा एक ही परिणाम वापस लेने के लिए गारंटित होता है, क्योंकि उनके परिणाम को प्रभावित करने के लिए कोई राज्य नहीं है) ndash लॉरेंट बौर्गॉल्ट-रॉय 22 अक्टूबर को 22:34 वे निश्चित रूप से एक ही नहीं हैं। अपरिवर्तनीय वस्तुएं कभी भी बदलती नहीं हैं अपरिवर्तनीय वस्तुओं की स्थिति कभी भी संशोधित नहीं की जाती है, अपरिवर्तनीय वस्तुओं को अलियाज करना हानिरहित है और अपरिवर्तनीय वस्तुओं के लिए कोई अन्य उपनाम नियंत्रण आवश्यक नहीं है, हालांकि यह साबित करने के लिए उपनाम नियंत्रण की आवश्यकता हो सकती है कि ऑब्जेक्ट वास्तव में अपरिवर्तनीय हैं और स्टेटलेस का मतलब है कि कोई राज्य नहीं है HTTP को एक स्टेटलेस प्रोटोकॉल कहा जाता है क्योंकि प्रत्येक कमांड को स्वतंत्र रूप से निष्पादित किया जाता है, इसके बिना आने वाले कमांड के ज्ञान के बिना। यह अनुरोध प्रतिमान पर आधारित है इस प्रोटोकॉल में संचार आमतौर पर एक टीसीपीआईपी प्रोटोकॉल पर होता है। 1 9 अक्तूबर, 1 9 -17 उत्तर में उत्तर दिया कि यह कुछ संदर्भों में एक ही बात है, लेकिन हम कुछ अलग पहलुओं पर ध्यान देते हैं। जब लोग कहते हैं कि राज्यविहीन मतलब यह है कि कोई राज्य नहीं है, यह मुझे हंसी बनाता है बेशक यह कुछ बिंदु से कुछ राज्य है, उदा। स्टेटलेस सर्विस ऑब्जेक्ट के जटिल ग्राफ (निर्भरता इंजेक्शन) द्वारा समर्थित हो सकती है। बात यह है कि नेटवर्क प्रोटोकॉल राज्य का थोड़ा अलग अर्थ है: यह कुछ ऐसा है जो पिछले अनुरोध पर निर्भर करता है। लेकिन अपरिवर्तनीय सेवा पिछले कॉलों पर भी निर्भर करती है, परिभाषा के अनुसार। स्टेटलेस हमेशा HTTP - प्रोटोकॉल से संबंधित नहीं है, उसी शब्द का उपयोग करके हम अपने चमकदार OOP कोड में सेवा ऑब्जेक्ट्स में सेटर्स का तर्क कर सकते हैं। और यहां आप यह देख सकते हैं कि ये दो शब्द वास्तव में समान हैं: अपरिवर्तनीय सेवा एक स्टेटलेस सर्विस है और इसके विपरीत। हालांकि, मेरे लिए यह अजीब है कि मुझे मूल्य ऑब्जेक्ट स्टेटलेस ऑब्जेक्ट कहते हैं। यह भयानक लगता है रीकैप: सेवाओं के मामले में (नेटवर्क या ओओपी, कोई फर्क नहीं पड़ता) आईडी कहता है कि ये शब्द विनिमेय हैं इससे कोई फर्क नहीं पड़ता कि हम कितनी बार लॉग-वार्निंग या लॉगअरेर कहलाते हैं और कॉल्स के ऑर्डर भी कोई फर्क नहीं पड़ता। इस प्रकार, हम इसे स्टेटलेस सर्विस कहते हैं। लेकिन इस सेवा का कोई सेटर्स भी नहीं है और changeFileName () जैसे किसी भी mutators - यह एक अपरिवर्तनीय serviceobject है परिवर्तनशीलता वस्तु को आभासी बनाता है स्टेटful ऑब्जेक्ट अस्थिर बनाता है ये शर्तें सेवाओं के संदर्भ में एक दूसरे पर निर्भर हैं। इम्प्रूटेबल ऑब्जेक्ट्स केवल ऐसे ऑब्जेक्ट हैं जिनके राज्य (ऑब्जेक्ट्स डेटा) निर्माण के बाद बदल नहीं सकते हैं। जेडीके से अपरिवर्तनीय वस्तुओं के उदाहरणों में स्ट्रिंग और पूर्णांक शामिल हैं। अपरिवर्तनीय वस्तुएं आपके कार्यक्रम को सरलता से सरल करती हैं, क्योंकि वे: निर्माण, परीक्षण, और प्रयोग करने में आसान हैं स्वचालित रूप से थ्रेड-सुरक्षित हैं और कोई भी सिंक्रनाइज़ेशन समस्या नहीं है, प्रतिलिपि कन्स्ट्रक्टर की आवश्यकता न होकर क्लोन के कार्यान्वयन की आवश्यकता न होकर आलसी आरंभीकरण और इसके बदले मूल्य को कैश करने के लिए एक क्षेत्र के रूप में उपयोग किए जाने पर इसे सुरक्षित रूप से प्रतिलिपि बनाने की आवश्यकता नहीं होती है, जब मैनेजमेंट के रूप में इस्तेमाल किया जाता है, अच्छा नक्शा कुंजियाँ और तत्वों को सेट करें (इन ऑब्जेक्ट्स को संग्रह में अवस्था में नहीं बदलना चाहिए) निर्माण पर एक बार उनकी कक्षा अपरिवर्तनीय स्थापना होनी चाहिए फिर से जाँच करें कि हमेशा विफलता परमाणुता (एक शब्द जो यहोो ब्लाक द्वारा उपयोग किया गया है) है: यदि कोई अपरिवर्तनीय वस्तु अपवाद फेंकता है, तो उसे कभी भी अवांछनीय या अनिश्चित स्थिति में नहीं छोड़ा गया है अचेतन वस्तुएं सकारात्मक गुणों की एक अत्यंत सम्मोहक सूची में हैं। बिना प्रश्न के, वे सबसे आसान और सबसे मजबूत प्रकार की कक्षाओं में से एक हैं जिन्हें आप संभवत: निर्माण कर सकते हैं। जब आप अपरिवर्तनीय वर्ग बनाते हैं, तो समस्त श्रेणियों की समस्याएं गायब हो जाती हैं। इन दिशानिर्देशों का पालन करके एक वर्ग को अपरिवर्तनीय बनाओ: सुनिश्चित करें कि कक्षा को ओवरराइड नहीं किया जा सकता है - कक्षा अंतिम बनाओ या स्थैतिक कारखानों का उपयोग करें और कन्स्ट्रक्टर्स निजी बनाने के लिए और अंतिम फोर्स कॉलर्स को किसी एक चरण में पूरी तरह से तैयार करने के लिए बनायें, इसके बजाय एक गैर-अभिभावक कन्स्ट्रक्टर का प्रयोग करने के लिए, जिसे XXX विधि सेट करने के लिए जोड़ा गया है (अर्थात, जावा बीन्स सम्मेलन से बचें) कोई भी तरीका प्रदान न करें जो ऑब्जेक्ट की स्थिति को किसी भी तरह से बदल सकें - न केवल सेट अप XXX तरीक़़ाएं, लेकिन कोई भी तरीका जो राज्य को बदल सकता है अगर वर्ग में कोई अयोग्य वस्तु फ़ील्ड है, तो वे क्लास और इसके कॉलर में प्रभावी जावा यहोशू ब्लाच इस मजबूर सिफारिश को बनाता है। क्लासेस को अपरिवर्तनीय होना चाहिए जब तक कि उन्हें अस्थिर बनाने के लिए कोई बहुत ही अच्छे कारण यदि एक वर्ग को अपरिवर्तनीय नहीं बनाया जा सकता है, तो जितना संभव हो उतना जितना परिवर्तनशीलता को सीमित कर सकते हैं। यह ध्यान देने योग्य है कि बिगडीक्यूम तकनीकी रूप से अपरिवर्तनीय नहीं है, क्योंकि इसकी अंतिम नहीं है नोट करें कि जवाडॉक 1.4 में - टैग विकल्प भी शामिल है, जिससे सरल कस्टम टैग परिभाषित किए जा सकते हैं। किसी को परिभाषित किया जा सकता है। उदाहरण के लिए, किसी वर्ग को अपरिवर्तनीय के रूप में दस्तावेज़ करने के लिए, उदाहरण के लिए, आप अपरिवर्तनीय ऑब्जेक्ट के लिए अपने स्वयं के टैग इंटरफ़ेस को परिभाषित करने पर भी विचार कर सकते हैं। क्या आप इस तकनीक की कॉपी 2017 हिरोन्देले सिस्टम स्रोत कोड संपर्क लाइसेंस आरएसएस का उपयोग करेंगे? बीएसडी लाइसेंस के तहत व्यक्तिगत कोड स्निपेट का इस्तेमाल किया जा सकता है - अंतिम 21 सितंबर, 2013 को अपडेट किया गया। पिछले साल 2,000,000 से अधिक अद्वितीय आईपी थे - WEB4J के साथ बनाया गया - एक मृत व्यक्ति की स्मृति में लिखा मृत्युलेख। बिल Dirani -
Comments
Post a Comment