मुझे लगता है कि उनकी प्रस्तुति पर स्लाइड 13 ( मानों का मूल्य ) इसे समझने में मदद करता है:
मान
- तरीकों की
जरूरत नहीं है
- मैं आपको बिना कोड के मान भेज सकता हूं
और आप ठीक हैं
मेरी समझ है, हिक्की सुझाव देते हैं कि अगर मुझे जरूरत है, तो कहो, मेरे द्वारा भेजे गए मूल्य को दोगुना कर दो, मैं बस कोड की तरह लिख रहा हूं
MyValue = Double(YourValue)
आप देखते हैं, ऊपर कोड समान है, इससे कोई फर्क नहीं पड़ता कि आपने किस प्रकार का मूल्य भेजा है - एक सही पुन: उपयोग की तरह ।
अब, यह भाषा में वस्तुओं और इंटरफेस की तरह कैसे दिखेगा?
Doublable MyValue = YourValue.Double()
अरे रुको! क्या होगा अगर YourValue
लागू नहीं होता है Doublable
? ऐसा नहीं है कि इसे दोगुना नहीं किया जा सकता है, यह पूरी तरह से हो सकता है लेकिन ... अगर कोई विधि नहीं है तो क्या होगा Double
? (क्या होगा अगर वहाँ एक विधि कहा जाता है TwiceAsMuch
?)
उह ओह हम एक समस्या है। YourValue.Double
काम नहीं करेगा, इसे अब पुन: उपयोग नहीं किया जा सकता है। उपरोक्त स्लाइड के मेरे पढ़ने के अनुसार, इस बारे में हिक्की का क्या मतलब है जब उन्होंने कहा, "वे सभी इंटरफेस आपके पुन: उपयोग को मारते हैं!"
आप देखते हैं, इंटरफेस यह मानते हैं कि वस्तुओं को "उनके तरीकों के साथ" पास किया जाता है, साथ ही इन पर चलने वाले कोड के साथ। वस्तुओं का उपयोग करने के लिए, किसी को यह समझने की आवश्यकता है कि उस कोड को कैसे आमंत्रित किया जाए, किस पद्धति से कॉल किया जाए।
जब अपेक्षित विधि गायब होती है, तो एक समस्या होती है, भले ही शब्दार्थ , वांछित ऑपरेशन किसी वस्तु के लिए एकदम सही समझ में आता है। जैसा कि प्रस्तुति में कहा गया है, मूल्यों को तरीकों की आवश्यकता नहीं है ("मैं आपको कोड के बिना मान भेज सकता हूं और आप ठीक हैं"), एक सामान्य तरीके से उनके साथ काम करने वाले कोड को लिखने की अनुमति देता है।
साइड नोट: कोड-कम मानों के आसपास से गुजरने की धारणा किसी तरह मुझे OOP में फ्लाईवेट पैटर्न की याद दिलाती है ।
एक ऑब्जेक्ट जो अन्य समान वस्तुओं के साथ जितना संभव हो उतना डेटा साझा करके मेमोरी उपयोग को कम करता है; यह बड़ी संख्या में वस्तुओं का उपयोग करने का एक तरीका है जब एक सरल दोहराया प्रतिनिधित्व स्मृति की अस्वीकार्य राशि का उपयोग करेगा ... फ्लाईवेट ऑब्जेक्ट परिभाषा मूल्य ऑब्जेक्ट द्वारा होते हैं । ऑब्जेक्ट इंस्टेंस की पहचान का कोई परिणाम नहीं है, इसलिए समान मूल्य के दो फ्लाईवेट उदाहरणों को समान माना जाता है ...
फ्लाईवेट उपयोग मैंने आमतौर पर वस्तुओं से कोड (विधियों, इंटरफेस) को अलग करने और सामान को चारों ओर से पास करने के समान दृष्टिकोण का पालन किया है, साथ ही, कोड-कम मान , यह अपेक्षा करते हुए कि कोड प्राप्त करना इन पर काम करने के लिए आवश्यक है।
यह स्लाइड पर बहुत अधिक लगता है, "मूल्यों को तरीकों की आवश्यकता नहीं है। मैं आपको बिना कोड के मान भेज सकता हूं और आप ठीक हैं"।