[c#] 데코레이터를 이용한 데이터 변환

데코레이터는 객체에 추가적인 기능을 동적으로 부여할 수 있는 디자인 패턴입니다. C#에서 데코레이터를 사용하여 데이터를 변환하고 새로운 기능을 추가하는 방법에 대해 알아보겠습니다.

1. 데코레이터 디자인 패턴

데코레이터 패턴은 객체를 감싸는 형태로 동작하여 객체에 새로운 기능을 추가할 수 있습니다. 이 패턴은 객체를 수정하지 않고, 새로운 상속 구조를 만들지 않고도 기능을 추가할 수 있는 장점이 있습니다.

2. 데코레이터를 사용한 데이터 변환 예제

// 기본 데이터 변환 인터페이스
public interface IDataTransformer
{
    string Transform(string data);
}

// 기본 데이터 변환 클래스
public class BasicDataTransformer : IDataTransformer
{
    public string Transform(string data)
    {
        // 기본 변환 로직
        return "Basic: " + data;
    }
}

// 데코레이터 클래스
public class DataTransformerDecorator : IDataTransformer
{
    private IDataTransformer _dataTransformer;

    public DataTransformerDecorator(IDataTransformer dataTransformer)
    {
        _dataTransformer = dataTransformer;
    }

    public virtual string Transform(string data)
    {
        // 새로운 기능 추가
        return "Decorated: " + _dataTransformer.Transform(data);
    }
}

위 예제에서 BasicDataTransformer는 기본 데이터를 변환하는 클래스입니다. 그리고 DataTransformerDecorator는 기본 데이터 변환에 새로운 기능을 추가하는 데코레이터 클래스입니다.

3. 데코레이터를 사용하여 데이터 변환하기

IDataTransformer transformer = new BasicDataTransformer();
Console.WriteLine(transformer.Transform("Hello")); // 출력: Basic: Hello

// 데코레이터를 이용하여 새로운 기능 추가
IDataTransformer decoratedTransformer = new DataTransformerDecorator(transformer);
Console.WriteLine(decoratedTransformer.Transform("Hello")); // 출력: Decorated: Basic: Hello

위 예제에서는 BasicDataTransformer를 사용하여 데이터를 변환하고, 데코레이터를 이용하여 해당 데이터 변환에 새로운 기능을 추가한 것을 확인할 수 있습니다.

데코레이터 패턴을 통해 객체의 기능을 동적으로 확장하고, 유연한 구조를 유지할 수 있습니다.

결론

데코레이터 패턴은 객체에 동적으로 기능을 추가하고 확장할 수 있는 디자인 패턴으로, C#에서 데이터 변환 및 기능 추가에 유용하게 활용될 수 있습니다.

참고 문헌:

위와 같이 C#에서 데코레이터를 활용하여 데이터를 변환하고 기능을 추가하는 방법에 대해 알아보았습니다.