konto usunięte
Temat: c# Dekoratory i sens użycia
Witam,Może mi ktoś wyjaśnić sens użycia wzorca dekoratora. Mam głóną klasę abstrakcyjną i klasę pochodna. Następnie tworzę klasę abstrakcyjną dekoratora dziedziczącą od klasy głównej i klasę pochodna od niego.
Czyli wychodzi to co poniżej:
public abstract class Beverage
{
public string description = "No description";
public abstract string getDescription();
public abstract double cost();
}
public class Coffee : Beverage
{
public Coffee() { description = "coffe"; }
public override double cost()
{
return 1.55;
}
public override string getDescription()
{
return description;
}
}
public abstract class Decoration : Beverage
{}
public class Feather : Decoration
{
Beverage beverage;
public Feather(Beverage beverage)
{
this.beverage = beverage;
}
public override string getDescription()
{
return beverage.getDescription() + ", Mocha";
}
public override double cost()
{
return .20 + beverage.cost();
}
}
Dalej w programie tworzę obiekty i wywołuję funkcje cost i getDesription.
Beverage beverage = new Coffee();
beverage = new Feather(beverage);
System.Console.WriteLine(beverage.getDescription() + beverage.cost());
To po co tak zawile tego używać skoro można wyrzucić klase abstrakcyjną dekoratora, klasa od niego pochodna zostanie klasą podstawową (skasować w tej klasie oveerridy) i wywołać to tak:
Feather bever = new Feather(beverage);
System.Console.WriteLine(bever.getDescription() + bever.cost());
Wynik ten sam.
Co zyskujemy na stosowaniu dekoratora?