[c#] C#에서 데코레이터 구현하기

데코레이터를 구현하기 위해서는 기본 객체를 감싸고, 추가적인 동작을 수행하는 클래스를 만들어야 합니다. 이를 위해 기존 객체를 상속하거나 인터페이스를 구현하는 방법을 사용할 수 있습니다.

예를 들어, 특정 객체를 데코레이터로 감싸는 방법은 다음과 같습니다.

// 인터페이스 정의
public interface IComponent
{
    void Operation();
}

// 기본 객체 구현
public class ConcreteComponent : IComponent
{
    public void Operation()
    {
        Console.WriteLine("This is the original operation.");
    }
}

// 데코레이터 구현
public class Decorator : IComponent
{
    private IComponent _component;
  
    public Decorator(IComponent component)
    {
        _component = component;
    }
  
    public void Operation()
    {
        _component.Operation();
        Console.WriteLine("Additional operation from the decorator.");
    }
}

위의 예제에서 IComponent는 기본 동작을 정의하는 인터페이스이며, ConcreteComponent는 이를 구현하는 클래스입니다. 데코레이터 역할을 하는 Decorator 클래스는 IComponent를 구현하고, 기본 객체를 감싸 추가적인 동작을 수행합니다.

이제 이를 사용하는 방법은 다음과 같습니다.

IComponent component = new ConcreteComponent();
IComponent decoratedComponent = new Decorator(component);
decoratedComponent.Operation();

데코레이터 패턴은 기존 객체의 동작을 유지하면서 추가적인 책임을 동적으로 부여할 수 있는 강력한 패턴입니다. 이를 통해 객체의 개별적인 기능을 확장하고 조합할 수 있습니다.

참고 문헌: