विरासत एक जानवर के लिए बिल्ली और कुत्ते के व्यवहार को कसकर जोड़ देगा। जो भी आप चाहते हैं हो सकता है।
हालांकि, अगर आप एक ब्रह्मांड जहां कुछ भी संभव है बनाने के लिए कोशिश कर रहे हैं, और एक जानवर अपने प्रकार बदल सकते हैं, तो आप पहचानकर्ता दृष्टिकोण का उपयोग करने .. पसंद कर सकते हैं
लेकिन आप इस आगे ले जा सकते हैं।
के अनुसार Gang of Fours design patterns आपको चाहिए
"फ़ेवर 'वस्तु रचना' 'वर्ग विरासत' पर।"
एक जानवर केवल एक कुत्ता है क्योंकि इसकी एक पूंछ है जो wags और यह छाल है। अपने ब्रह्मांड में जहां समय के साथ एक कुत्ता बात करना सीख सकता है, आप इस व्यवहार को संशोधित करने में सक्षम होना चाहेंगे।
फिर आप इसके व्यवहार को सारणी देने का प्रयास कर सकते हैं, और फिर इस व्यवहार के भीतर आप विरासत का उपयोग कर सकते हैं।
इस वर्ग संरचना के साथ
:
class Tail
{
DoYourThing()
}
class WaggyTail : Tail
{
DoYourThing()
{
// Wag
}
}
class Noise
{
DoYourThing()
}
class Bark : Noise
{
DoYourThing()
{
// Bark
}
}
class Talk : Noise
{
DoYourThing()
{
// Talk
}
}
class Animal
{
public Noise { get; set; }
public Tail { get; set; }
}
आप अपने बिल्लियों और कुत्तों की स्थापना कर सकते हैं:
Animal dog = new Animal { Noise = new Bark(), tail = new DoggyTail() }
Animal cat = new Animal{ Noise = new Purr(), tail = new CattyTail() }
.. तो जब आप अपने सुपर जरूरत नस्ल आप साधारण परिवर्तन उनके व्यवहार कर सकते हैं
कुत्ता।शोर = नई बात();
.. अरे प्रतिष्ठा, आपका कुत्ता अब बात कर सकता है .. यदि आपको गायन करने के लिए अपने कुत्ते की ज़रूरत है, तो आप बस एक नया सिंग क्लास बनाएं .. कोई और बदलाव की आवश्यकता नहीं है।
स्रोत
2010-03-16 10:45:10
http://stackoverflow.com/questions/269496/inheritance-vs- समेकन –
@jleedev: यह एकत्रीकरण या संरचना नहीं है। कम से कम सख्ती से नहीं। –
हम्म, मुझे धीमा होना चाहिए। –