СделайКонечно! Вот как можно добавить комментарий к классуClient
в коде на C#:
C#:using System; // Базовый интерфейс компонента public interface IComponent { string Operation(); } // Конкретный компонент (класс кофе) // Конкретные Компоненты предоставляют реализации поведения по умолчанию. Может быть несколько вариаций этих классов. public class ConcreteComponent : IComponent { public string Operation() { return "ConcreteComponent"; } } // Базовый класс Декоратора // Декораторы могут выполнять своё поведение до или после вызова обёрнутого объекта. public class Decorator : IComponent { protected IComponent component; public Decorator(IComponent component) { this.component = component; } public virtual string Operation() { return component.Operation(); } } // Конкретный декоратор A public class ConcreteDecoratorA : Decorator { public ConcreteDecoratorA(IComponent component) : base(component) { } public override string Operation() { return "ConcreteDecoratorA(" + base.Operation() + ")"; } } // Конкретный декоратор B public class ConcreteDecoratorB : Decorator { public ConcreteDecoratorB(IComponent component) : base(component) { } public override string Operation() { return "ConcreteDecoratorB(" + base.Operation() + ")"; } } // Клиентский код // Клиентский код работает со всеми объектами, используя интерфейс Компонента. Таким образом, он остаётся независимым от конкретных классов компонентов, с которыми работает. class Client { public static void ClientCode(IComponent component) { Console.WriteLine("RESULT: " + component.Operation()); } static void Main() { // Создание простого компонента IComponent simple = new ConcreteComponent(); Console.WriteLine("Client: I've got a simple component:"); ClientCode(simple); Console.WriteLine(); // Создание декорированных компонентов IComponent decorator1 = new ConcreteDecoratorA(simple); IComponent decorator2 = new ConcreteDecoratorB(decorator1); Console.WriteLine("Client: Now I've got a decorated component:"); ClientCode(decorator2); } }
/**
* Таким образом, клиентский код может поддерживать как простые компоненты...
*/