[c#] C#에서 다중 데코레이터 적용하기

C#에서는 데코레이터 패턴을 사용하여 객체에 동적으로 추가적인 기능을 더할 수 있습니다. 데코레이터는 기본 객체를 감싸고, 추가적인 동작을 수행합니다. 여기서는 C#에서 다중 데코레이터를 적용하는 방법에 대해 살펴봅니다.

1. 데코레이터 클래스 생성

처음으로, 데코레이터 클래스를 생성합니다. 이 클래스는 기본 기능을 제공하고, 추가적인 동작을 수행할 수 있습니다.

public interface IComponent
{
    void Operation();
}

public class ConcreteComponent : IComponent
{
    public void Operation()
    {
        Console.WriteLine("Basic operation");
    }
}

public abstract class Decorator : IComponent
{
    protected IComponent component;

    public Decorator(IComponent component)
    {
        this.component = component;
    }

    public virtual void Operation()
    {
        component.Operation();
    }
}

public class ConcreteDecoratorA : Decorator
{
    public ConcreteDecoratorA(IComponent component) : base(component)
    {
    }

    public override void Operation()
    {
        Console.WriteLine("Additional operation A");
        base.Operation();
    }
}

public class ConcreteDecoratorB : Decorator
{
    public ConcreteDecoratorB(IComponent component) : base(component)
    {
    }

    public override void Operation()
    {
        Console.WriteLine("Additional operation B");
        base.Operation();
    }
}

2. 다중 데코레이터 적용

다음으로, 다중 데코레이터를 적용할 객체를 생성합니다. 이때, 데코레이터를 중첩하여 적용할 수 있습니다.

IComponent component = new ConcreteComponent();
component = new ConcreteDecoratorA(component);
component = new ConcreteDecoratorB(component);
component.Operation();

위 코드에서는 ConcreteComponent 객체에 ConcreteDecoratorAConcreteDecoratorB를 순차적으로 적용하여 다중 데코레이터를 적용한 예시입니다.

이제 C#에서 다중 데코레이터를 적용하는 방법에 대해 이해했습니다. 데코레이터 패턴은 객체의 동작을 유연하게 확장하는 강력한 방법입니다.

참고 자료