Che cosa significa Decorare una classe o un parametro?
Qual è lo scopo e quando dovrei farlo?Cosa significa decorare una classe o un parametro?
Collegamenti a risorse e risposte dirette sono benvenuti.
Grazie.
Che cosa significa Decorare una classe o un parametro?
Qual è lo scopo e quando dovrei farlo?Cosa significa decorare una classe o un parametro?
Collegamenti a risorse e risposte dirette sono benvenuti.
Grazie.
Decoratore era uno dei 26 modelli originali descritti nel libro di Gang of Four "Design Patterns". Lo descrivono bene here.
Sommario:
Decorator: aggiungere ulteriori funzionalità a una classe in fase di esecuzione in cui sottoclassi si tradurrebbe in un aumento esponenziale di nuove classi
I modelli sono il linguaggio agnostico. Sono descrizioni di soluzioni a problemi comuni nella programmazione orientata agli oggetti. È possibile, anche preferito, discuterli senza fare riferimento a una particolare lingua. Gli esempi nel libro originale sono stati scritti in C++ e Smalltalk. Né Java né C# esistevano quando il libro fu pubblicato per la prima volta nel 1995.
Quando si aggiunge decoratore in C# è come aggiungere una proprietà alla classe/metodo. Ci sarà un attributo ad esso allegato.
se si scrive di prova Unità Incontrerete un semplice decoratore TestMethod
così:
[TestMethod]
public void TestMethod1()
{
}
Il quadro userà i decoratori per controllare ciò che i metodi di prova sono nel set di test.
Puoi controllare l'attributo here
V'è un altro bello leggere l'articolo su Writing Custom Attributes
Decoratori non sono limitati alla forma '[]' di decoratori. C'è anche un modello di design per questo, che è stato già menzionato prima da altri.
Decorare una classe significa aggiungere funzionalità a una classe esistente. Ad esempio, hai una classe SingingPerson
che ha un talento nel cantare.
public class SingingPerson
{
public string Talent = "I can sing";
public string DoTalent()
{
return Talent;
}
}
In seguito, si è deciso che la classe SingingPerson
dovrebbe anche essere in grado di ballare, ma non voler modificare la struttura di classe esistente. Quello che fai è decorare la classe SingingPerson
creando un'altra classe che contiene la funzionalità aggiunta. Questa nuova classe che verrà creata include un oggetto SinginPerson
.
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;
}
}
Quando si tenta di creare istanze di queste classi l'output sarà il seguente:
SingingPerson person1 = new SingingPerson();
Console.WriteLine("Person 1: " + person1.DoTalent());
SingingAndDancingPerson person2 = new SingingAndDancingPerson(person1);
Console.WriteLine("Person 2: " + person2.DoTalent());
Console.ReadLine();
Guardando questo? http://www.codeproject.com/Articles/479635/UnderstandingplusandplusImplementingplusDecoratorp –
Puoi decorare classi e membri della classe con attributi. Fondamentalmente, questi attributi sono un'altra classe derivata dalla classe System.Attribute che fornisce alcune informazioni aggiuntive. Maggiori informazioni puoi trovare qui: https: // msdn.microsoft.com/en-us/library/aa288454(v=vs.71).aspx – Fabjan
In C# questo potrebbe significare utilizzare gli attributi o il modello decoratore. Suppongo che cosa intendi sia Attributi poiché si applicano a Classi e parametri. – nozzleman