2015-07-03 7 views
6

कक्षा या पैरामीटर को सजाने का क्या अर्थ है?
उद्देश्य क्या है और मैं यह कब करूँगा?कक्षा या पैरामीटर को सजाने का क्या अर्थ है?

संसाधनों और प्रत्यक्ष उत्तरों के लिए लिंक का स्वागत है।

धन्यवाद।

+1

इस खोज:

public class SingingAndDancingPerson { SingingPerson person; public string Talent { get; set; } public SingingAndDancingPerson(SingingPerson person) { this.person = person; } public string DoTalent() { this.Talent = person.Talent; this.Talent += " and dance"; return this.Talent; } } 

आप इन कक्षाओं के उदाहरण बनाने के लिए प्रयास करते हैं आउटपुट निम्नलिखित हो जाएगा? http://www.codeproject.com/Articles/479635/UnderstandingplusandplusImplementingplusDecoratorp –

+1

आप गुणों के साथ कक्षाओं और वर्ग के सदस्यों को सजाने के लिए कर सकते हैं। असल में यह गुण क्लास सिस्टम से व्युत्पन्न एक और वर्ग हैं। एट्रिब्यूट जो कुछ अतिरिक्त जानकारी प्रदान करता है। अधिक जानकारी आप यहां पा सकते हैं: https: // msdn।microsoft.com/en-us/library/aa288454(v=vs.71).aspx – Fabjan

+2

सी # में इसका अर्थ या तो गुण या सजावट पैटर्न का उपयोग करना हो सकता है। मुझे लगता है कि आप क्या मतलब है गुण है क्योंकि वे दोनों वर्गों और मानकों पर लागू होते हैं। – nozzleman

उत्तर

3

सजावट गैंग ऑफ चार "Design Patterns" पुस्तक में वर्णित मूल 26 पैटर्न में से एक था। वे इसे अच्छी तरह से वर्णन करते हैं here

सारांश:

डेकोरेटर: क्रम जहां उपवर्गीकरण नए वर्गों के एक घातीय वृद्धि

पैटर्न नास्तिक भाषा हैं में परिणाम होगा की किसी कक्षा के लिए अतिरिक्त कार्यक्षमता जोड़ें। वे ऑब्जेक्ट उन्मुख प्रोग्रामिंग में सामान्य समस्याओं के समाधान के विवरण हैं। किसी विशेष भाषा के संदर्भ के बिना उन पर चर्चा करना संभव है, यहां तक ​​कि पसंदीदा भी। मूल पुस्तक में उदाहरण सी ++ और स्मॉलटाक में लिखे गए थे। जब पुस्तक पहली बार 1995 में प्रकाशित हुई थी तब जावा और न ही सी # अस्तित्व में था।

3

जब आप सी # में सजावट जोड़ते हैं तो यह कक्षा/विधि में एक संपत्ति जोड़ने जैसा है। इससे जुड़ी एक विशेषता होगी।

आप यूनिट परीक्षण आप इस तरह एक साधारण डेकोरेटर TestMethod को पूरा करेगा लिखते हैं:

[TestMethod] 
public void TestMethod1() 
{ 
} 

ढांचे की जांच करने के क्या परीक्षण तरीकों परीक्षण सेट में हैं सज्जाकार का प्रयोग करेंगे।

आप विशेषता here

पर देख सकते हैं वहाँ लेख के बारे में Writing Custom Attributes

डेकोरेटर '[]' सज्जाकार के रूप तक सीमित नहीं हैं पढ़ने के लिए एक और अच्छा है। इसके लिए एक डिजाइन पैटर्न भी है, जिसका पहले से ही दूसरों द्वारा पहले उल्लेख किया गया था।

1

सजाने वाली कक्षा का मतलब मौजूदा वर्ग में कार्यक्षमता जोड़ना है। उदाहरण के लिए, आपके पास कक्षा SingingPerson है जिसमें गायन की प्रतिभा है।

public class SingingPerson 
{ 
    public string Talent = "I can sing"; 
    public string DoTalent() 
    { 
     return Talent; 
    } 
} 

बाद में, आप तय किया कि SingingPerson वर्ग भी नृत्य करने के लिए सक्षम होना चाहिए लेकिन मौजूदा वर्ग संरचना को बदलने के लिए नहीं करना चाहती। आप क्या करते हैं, आप SingingPerson कक्षा को एक और कक्षा बनाकर सजाने की कार्यक्षमता को सजाने के लिए सजाते हैं। यह नई कक्षा जिसे आप बना रहे हैं SinginPerson ऑब्जेक्ट में लेता है।

SingingPerson person1 = new SingingPerson(); 
     Console.WriteLine("Person 1: " + person1.DoTalent()); 
     SingingAndDancingPerson person2 = new SingingAndDancingPerson(person1); 
     Console.WriteLine("Person 2: " + person2.DoTalent()); 
     Console.ReadLine(); 
+0

लेकिन इसका मतलब है __not__ subclass, नहीं? – TaW

+0

@TaW 'subclass 'से आपका क्या मतलब है? – jmc

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