ПАТТЕРН ДЕКОРАТОР (DECORATOR)
Паттерн Декоратор можно описать так:
- Берем объект "Кофе";
- Декорируем его объектом "Сахар";
- Декорируем его объектом "Молоко";
- Вызываем метод cost и пользуемся делегированием для прибавления стоимости дополнений.
Паттерн Декоратор динамически наделяет объект новыми возможностями и является гибкой альтернативой субклассированию в области расширения функциональности.
// декорируемый объект
abstract class ecDrink{
public string _description = "Unknown beverage";
public virtual string getDescription()
{
return _description;
}
public abstract double cost();
}
// декоратор
abstract class ecCondimentDecorator : ecDrink{
}
// конкретный класс декорируемого объекта
class ecEspresso : ecDrink{
public ecEspresso()
{
_description = "Espresso";
}
public override double cost()
{
return 1.99;
}
}
// конкретный класс декоратора
class ecMocha : ecCondimentDecorator{
private ecDrink drink;
public ecMocha(ecDrink prmDrink)
{
this.drink = prmDrink;
}
public override string getDescription()
{
return drink.getDescription() + ", Mocha";
}
public override double cost()
{
return .20 + drink.cost();
}
}
Комментариев нет:
Отправить комментарий