साथ फिर से करें मैं एक articleपूर्ववत करें/अपरिवर्तनीय वस्तुओं
अपरिवर्तनीय वस्तुओं में निम्नलिखित को पढ़ने के इस तरह के पूर्ववत करें/फिर और abortable लेनदेन के रूप में कुछ आम मुहावरों को लागू करने के लिए विशेष रूप काम कर रहे हैं। उदाहरण के लिए पूर्ववत करें। पूर्ववत को लागू करने के लिए सामान्य तकनीक किसी भी तरह से पता चलता है कि प्रत्येक आदेश को रिवर्स (तथाकथित "कमांड पैटर्न") में कैसे चलाएं। हालांकि, रिवर्स में कमांड चलाने के लिए कैसे पता लगाना मुश्किल हो सकता है। एक आसान तकनीक अपरिवर्तनीय वस्तुओं का एक ढेर बनाए रखने क्रमिक आदेशों के बीच सिस्टम की स्थिति का प्रतिनिधित्व करती है। फिर, को कमांड को पूर्ववत करें, आप बस पिछले सिस्टम स्थिति में वापस लौटाएं (और शायद मौजूदा स्थिति को रेड स्टैक पर संग्रहीत करें)।
हाउवर, लेख "पूर्ववत" संचालन को लागू करने के लिए अपरिवर्तनीय वस्तुओं का उपयोग कैसे किया जा सकता है इसका एक अच्छा व्यावहारिक उदाहरण नहीं दिखाता है। उदाहरण के लिए ... जीमेल इनबॉक्स से 10 ईमेल हटाएं। एक बार ऐसा करने के बाद, यह एक पूर्ववत विकल्प है। इस संबंध में एक अपरिवर्तनीय वस्तु कैसे मदद करेगी?
"जीमेल इनबॉक्स इस तकनीक का उपयोग करने के लिए बहुत बड़े हैं"। Ish। यदि वास्तविक संदेश अलग-अलग ऑब्जेक्ट्स हैं, और दो अलग-अलग इनबॉक्स ऑब्जेक्ट्स एक ही संदेश को संदर्भित करते हैं, तो एक इनबॉक्स केवल एक सूची है और आप शायद इसे इस तरह से कर सकते हैं। अपरिवर्तनीय वस्तुओं के बारे में दूसरी महान बात यह है कि वस्तुएं इस तरह के संसाधनों को सुरक्षित रूप से साझा कर सकती हैं।उत्परिवर्तनीय वस्तुओं के साथ, आपको दूसरे में गलत तरीके से दिखाई देने वाले बदलावों के बारे में चिंता करनी पड़ सकती है। –
यह एक उत्कृष्ट बिंदु है। मुझे लगता है कि एक जीमेल खाते के लिए, उपयुक्त अपरिवर्तनीय वस्तु टैग की सूची और प्रत्येक टैग के लिए ई-मेल ऑब्जेक्ट की संबंधित सूचियां होगी; यह पूरे संग्रह से बहुत छोटा है, लेकिन इनबॉक्स संदेशों की सूची से कहीं अधिक बड़ा है। – jprete