2010-02-24 7 views
16

तो स्क्वाक/फारो समर्थन लक्षण और न्यूजपीक में मिक्सिन हैं। अंतर क्या है? लक्षणों में कोई इंस्टार नहीं है लेकिन मिक्सिन के पास है?स्क्वाक/फारो ट्राइट और न्यूज़पीक मिक्सिन के बीच क्या अंतर है?

उत्तर

9

अच्छी तुलना के लिए और लक्षणों को क्यों पसंद किया जाता है, इस तर्क के कारण, आप traits paper (pdf) देख सकते हैं।

लक्षण के सदस्यों को एक वर्ग में बना रहे हैं, और इसके वंशानुगत पदानुक्रम में परिवर्तन नहीं करते:

संक्षेप में, यह क्या Lukas Renggli कहा है। संघर्षों के उपयोगकर्ता द्वारा संघर्षों को स्पष्ट रूप से हल किया जाना चाहिए।

मिक्सिन को लक्षित वर्ग 'विरासत पदानुक्रम में रेखांकित किया गया है। यदि विवादित सदस्य हैं, तो जिस आदेश में उन्हें घोषित किया गया था, वह निर्देश देता है कि किस सदस्य को बुलाया जाता है। यह नाजुक है क्योंकि यह स्पष्ट रूप से संरचना के व्यवहार को परिभाषित करता है, और वर्ग लेखक को संभावित संघर्षों के बारे में पता होना चाहिए और वे परिणामस्वरूप वर्ग को कैसे प्रभावित करेंगे।

चूंकि मिश्रणों को रैखिकरण मिलता है, इसलिए वे बहु-विरासत के कुख्यात "डायमंड समस्या" से ग्रस्त नहीं हैं।तो नाजुक प्रकृति जिसमें वे ढेर हैं, एक और समस्या है, जिसे मैं मूल्यवान पत्थर रूपक के साथ रखने के लिए "रूबी समस्या" डब कर दूंगा। moose के साथ कुछ अजीब कारणों के लिए, मोती समस्या और साथ ही rubies को चित्रित नहीं करते हैं।

9

गुण रचना नियम का उपयोग करके बनाये गये हैं। संघर्षों को मैन्युअल रूप से हल किया जाना चाहिए, ऐसा नहीं हो सकता है कि एक विशेषता गलती से उसी नाम के साथ एक और विधि को ओवरराइड करता है।

मिक्सिन आदेश द्वारा रचित हैं और इस प्रकार कई विरासत के समान नाजुकता की समस्याएं हैं।

+1

आमतौर पर एकाधिक विरासत से जुड़ी नाजुकता "हीरा समस्या" है - एक ही नाम और हस्ताक्षर के साथ विधि का कोई निर्धारिक संकल्प जिसे कई वर्गों से विरासत में मिला है। मिक्किंस के मामले में, जैसा कि आपने पहले ही नोट किया है, संरचना आदेश निर्धारित करता है कि विधियों को कैसे हल किया जाता है, इसलिए मिश्रण "हीरे की समस्या" से पीड़ित नहीं होते हैं। – Yardena

+2

हां वे करते हैं, लेकिन यह पक्षपातपूर्ण तरीके से है। यदि आपको 'मिक्सिन 1' और' मिक्सिन 2 'दोनों से' एम() 'और' n() 'दो विधियां मिलती हैं, तो आपके पास केवल एक मिश्रण से दोनों विधियां हो सकती हैं। यदि आप 'मिक्सिन 1' से एक विधि चाहते हैं और दूसरा 'मिक्सिन 2' से चाहते हैं, तो आप अटक गए हैं। –

+1

जो आप वर्णन करते हैं वह "हीरा समस्या" के रूप में जाना जाता है। मुझे यकीन नहीं है कि यह एक समस्या है - मिश्रण को पुन: प्रयोज्य व्यवहार की एक न्यूनतम इकाई का प्रतिनिधित्व करना चाहिए, इसलिए स्वाभाविक रूप से इसे और भी तोड़ा नहीं जा सकता ... – Yardena

8

न्यूज़पीक में सभी वर्ग मिश्रक हैं। यहाँ Newspeak discussion forum में एक ऐसी ही सवाल का गिलाड ब्राचा के जवाब से कुछ के टुकड़े कर रहे हैं:

mixins Newspeak से प्रति की एक विशेषता नहीं हैं। यही है, हमने भाषा को परिभाषित नहीं किया है, ठीक है, अब हम मिश्रण जोड़ देंगे। मिक्सिन स्वचालित रूप से कक्षा घोंसला और संदेश आधारित सेमेन्टिक्स से बाहर निकलते हैं। यही है, अगर आपके पास वर्चुअल क्लासेस हैं, तो आपके पास मिक्सिन है जब तक कि आप वास्तव में उन पर प्रतिबंध नहीं लगाते। ...

लक्षण मिक्स्ड की समस्या को हल करने का प्रयास करते हैं।

  1. बहुत कम वास्तविक अनुभव यह इंगित करता है कि ये माना गया समस्याएं वास्तविक हैं।
  2. लक्षण स्टेटलेस होने के लिए प्रतिबंधित हैं। यह मामलों को सरल बनाता है, लेकिन ब्याज के सभी मामलों को संभाल नहीं करता है। वास्तव में, अब शोध पत्र गुणों के लिए राज्य जोड़ने का प्रयास कर रहे हैं।

लक्षण पूरी तरह से एक और अधिक सामान्य मॉडल है, जो मैं अपने पीएचडी थीसिस में साल पहले कई तैयार द्वारा सम्मिलित किया है (उपलब्ध अपने वेब साइट बंद, यदि आप वास्तव में को गहराई से चाहते हैं)। ... मैं यह जांचना चाहता हूं कि हम इन combinators को न्यूज़पीक में कैसे शामिल कर सकते हैं। ...

संबंधित मुद्दे