2009-02-26 17 views
13

मुझे जावा में एक ढांचे पर article मिला है जो स्पष्ट रूप से इसे Mixins और कंपोजिट ओरिएंटेड प्रोग्रामिंग नामक कुछ (जो मुझे पता है कि एक ही चीज़ भी हो सकती है ...) के साथ मैंने यह भी सुना है/काम किया है एओपी, और मुझे यकीन नहीं है कि यह इससे अलग कैसे है ...सार कक्षा और एक मिक्सिन के बीच क्या अंतर है?

उत्तर

23

भाषा-अज्ञेय स्तर पर, एक मिश्रण सिर्फ कक्षा में कार्यक्षमता जोड़ता है, और प्रोग्रामर सुविधा के लिए और कोड डुप्लिकेशन से बचने के लिए अधिक है। एक सार (आधार) वर्ग एक रिश्ता है और बहुरूपता के लिए अनुमति देता है। विरासत का उपयोग क्यों किया जाता है इसका एक कारण यह है कि यह उन भाषाओं में किसी भी बॉयलरप्लेट को लिखने के बिना मिश्रणों को लागू करने का एक आसान तरीका है जो वास्तव में उनका समर्थन नहीं करते हैं। समस्या यह है कि आप एक बहुलक घोषित कर रहे हैं-एक साइड इफेक्ट के रूप में एक रिश्ते, जिससे आपके एपीआई को अधिक भ्रमित और संभवतः अस्पष्टता मिलती है। इसलिए, डी और रूबी जैसे नई भाषा मूल सुविधाओं के रूप में मिश्रित मिश्रणों को समर्थन देती हैं, जो पॉलिमॉर्फिक घोषित किए बिना कक्षा में कार्यक्षमता का एक गुच्छा जोड़ने का सुविधाजनक तरीका है-एक रिश्ते।

+0

+1 अच्छी संक्षिप्त व्याख्या। यह सीओपी सामान अच्छा लगता है। हालांकि मुझे यह देखना पसंद है कि इस तरह की चीज कोर भाषा स्तर तक पहुंच जाती है। एओपी सामान के साथ ही। – BuddyJoe

+0

@ ब्रूनो सी ++ जैसी मूल भाषा? – leeand00

+0

संक्षिप्त और बहुत स्पष्ट। बहुत बढ़िया स्पष्टीकरण! – Hugo

0

मिक्सिन स्टैंड स्टैंड अकेले वर्ग के रूप में कभी नहीं है। वे आपके द्वारा घोषित कक्षा में कुछ कार्यक्षमता जोड़ते हैं। पायथन में उन्हें कक्षा सजावटकर्ताओं द्वारा आसानी से लागू किया जा सकता है। उदाहरण के लिए आप अपनी कक्षा को सिंगलटन मिश्रण के साथ सजाने के लिए, अपनी कक्षा को सिंगलटन बना सकते हैं।

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