मान लीजिए कि मैं एक उद्देश्य-सी वर्ग बना रहा हूं जो एक अंश का प्रतिनिधित्व करता है, और अपरिवर्तनीय और परिवर्तनीय संस्करण बनाना चाहता है।एक उद्देश्य-सी कक्षा के अपरिवर्तनीय और परिवर्तनीय संस्करण बनाने का सबसे प्रभावी तरीका क्या है?
फाउंडेशन ढांचे में पैटर्न के बाद, आप अपरिवर्तनीय संस्करण में fractionByAddingFraction:
विधि और addFraction:
को व्यवहार्य संस्करण में देखने की उम्मीद कर सकते हैं।
मैं जिस विरोधाभास में भाग रहा हूं वह यह है कि दो वर्गों के बीच एक बार अंश-जोड़ तर्क कैसे शामिल किया जाए। ऐसा लगता है कि अपरिवर्तनीय fractionByAddingFraction:
विधि को कोड डुप्लिकेशंस से बचने के लिए म्यूटेबल addFraction:
विधि के बारे में जानने (और इसका उपयोग करने की आवश्यकता है), और फिर भी अपरिवर्तनीय वर्ग के कार्यान्वयन में उत्परिवर्तनीय विधियों को शामिल करने का अर्थ है कि वे अनुमानित रूप से अपरिवर्तनीय पर बुलाए जा सकते हैं वस्तु, जो बिंदु को हरा देता है।
एक संक्षिप्त स्पष्टीकरण (या बेहतर अभी भी, इस सरलीकृत उदाहरण की निरंतरता) की बहुत सराहना की जाएगी!
आपका क्लास उदाहरण _value object_ का प्रतिनिधित्व करता प्रतीत होता है, इसलिए मुझे नहीं लगता कि आपको इसके लिए एक परिवर्तनीय संस्करण प्रदान करना चाहिए। __ बस इसे अपरिवर्तनीय बनाएं .__ –
@ Jordão इस विशेष उदाहरण के लिए, आप बिल्कुल सही हैं। मैंने महसूस किया कि सामान्य रूप से अवधारणा के बारे में मेरी भ्रम को समझाने का यह सबसे आसान और सबसे संक्षिप्त तरीका था (क्योंकि यह अधिक जटिल वर्गों से संबंधित है)। इस पर विचार किए बिना किसी भी विचार पर किया जाएगा? – user1385983