Co to znaczy dekorować klasę lub parametr?
Jaki jest cel i kiedy powinienem to zrobić?Co to znaczy udekorować klasę lub parametr?
Linki do zasobów i odpowiedzi bezpośrednie są mile widziane.
Dzięki.
Co to znaczy dekorować klasę lub parametr?
Jaki jest cel i kiedy powinienem to zrobić?Co to znaczy udekorować klasę lub parametr?
Linki do zasobów i odpowiedzi bezpośrednie są mile widziane.
Dzięki.
Dekorator był jednym z oryginalnych 26 wzorów opisanych w książce Gang of Four "Design Patterns". Opisują to dobrze here.
Podsumowanie:
Dekorator: Dodaj dodatkowe funkcje do klasy w czasie wykonywania gdzie subclassing powodowałby wykładniczym wzrostem nowych klas
wzory język agnostykiem. Są to opisy rozwiązań typowych problemów w programowaniu obiektowym. Możliwe jest nawet, nawet przedyskutowanie ich bez odniesienia do konkretnego języka. Przykłady w oryginalnej książce zostały napisane w C++ i Smalltalk. Ani Java, ani C# nie istniały, gdy książka została po raz pierwszy opublikowana w 1995 roku.
Dodanie dekoratora w języku C# przypomina dodawanie właściwości do klasy/metody. Zostanie dołączony atrybut.
Jeśli piszesz testy jednostkowe Poznasz proste dekorator TestMethod
tak:
[TestMethod]
public void TestMethod1()
{
}
Ramy użyje dekoratorów aby sprawdzić co badanie metody są w zestawie testowym.
Można sprawdzić na atrybucie here
Jest inna miło przeczytać artykuł o Writing Custom Attributes
Dekoratorzy nie ograniczają się do „[]” postaci dekoratorów. Istnieje również wzorzec projektowy, o którym już wcześniej wspominali inni.
Dekorowanie klasy oznacza dodanie funkcjonalności do istniejącej klasy. Na przykład masz klasę SingingPerson
, która ma talent do śpiewania.
public class SingingPerson
{
public string Talent = "I can sing";
public string DoTalent()
{
return Talent;
}
}
Później zdecydowałeś, że klasa SingingPerson
powinny również być w stanie tańczyć, ale nie chcę, aby zmienić istniejące struktury klasowej. To co robisz, dekorujesz klasę SingingPerson
, tworząc inną klasę, która zawiera dodatkową funkcjonalność. Ta nowa klasa, którą będziesz tworzyć, bierze obiekt 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;
}
}
Podczas próby utworzenia instancji tych klas wyjście będzie następujący:
SingingPerson person1 = new SingingPerson();
Console.WriteLine("Person 1: " + person1.DoTalent());
SingingAndDancingPerson person2 = new SingingAndDancingPerson(person1);
Console.WriteLine("Person 2: " + person2.DoTalent());
Console.ReadLine();
Szukam tego? http://www.codeproject.com/Articles/479635/UnderstandingplusandplusImplementingplusDecoratorp –
Możesz dekorować klasy i członków klasy atrybutami. Zasadniczo te atrybuty są kolejnymi klasami pochodnymi klasy System.Attribute, które dostarczają dodatkowych informacji. Więcej informacji można znaleźć tutaj: https: // msdn.microsoft.com/en-us/library/aa288454(v=vs.71).aspx – Fabjan
W języku C# może to oznaczać użycie Atrybutu lub wzoru dekoratora. Przypuszczam, że masz na myśli atrybuty, ponieważ dotyczą one zarówno klas, jak i parametrów. – nozzleman