[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();
데코레이터 패턴은 기존 객체의 동작을 유지하면서 추가적인 책임을 동적으로 부여할 수 있는 강력한 패턴입니다. 이를 통해 객체의 개별적인 기능을 확장하고 조합할 수 있습니다.
참고 문헌:
- https://refactoring.guru/design-patterns/decorator
- https://docs.microsoft.com/en-us/dotnet/standard/decorator-pattern