[c#] 데코레이터를 이용한 기능 토글링

데코레이터(decorator)는 객체에 새로운 행동을 추가하거나 행동을 변경할 수 있는 유용한 디자인 패턴입니다. 이번에는 C#에서 데코레이터를 활용하여 기능을 쉽게 토글링하는 방법을 알아보겠습니다.

데코레이터 패턴이란?

데코레이터 패턴은 객체를 수정하지 않고도 객체에 새로운 기능을 동적으로 추가할 수 있게 해주는 패턴입니다. 기존의 기능을 수정하지 않고, 기능을 추가하거나 제거할 수 있어 유연한 구조를 가지고 있습니다.

기능 토글링을 위한 데코레이터 구현

아래는 C#에서 기능 토글링을 위해 데코레이터를 사용하는 간단한 예제 코드입니다.

// 기능 인터페이스
interface IFeature
{
    void Run();
}

// 기본 기능 클래스
class BaseFeature : IFeature
{
    public void Run()
    {
        Console.WriteLine("Base feature running");
    }
}

// 기능을 활성화 또는 비활성화하는 데코레이터
class FeatureToggleDecorator : IFeature
{
    private readonly IFeature _feature;
    private bool _enabled;

    public FeatureToggleDecorator(IFeature feature, bool enabled)
    {
        _feature = feature;
        _enabled = enabled;
    }

    public void Run()
    {
        if (_enabled)
        {
            _feature.Run();
        }
        else
        {
            Console.WriteLine("Feature is disabled");
        }
    }
}

데코레이터를 이용한 기능 토글링의 활용

위의 예제 코드에서 FeatureToggleDecorator 클래스는 IFeature 객체의 기능을 토글링하는 역할을 합니다. 이를 통해 특정 기능을 동적으로 활성화 또는 비활성화할 수 있습니다.

IFeature feature = new BaseFeature();
feature.Run(); // "Base feature running"

IFeature featureWithToggle = new FeatureToggleDecorator(new BaseFeature(), false);
featureWithToggle.Run(); // "Feature is disabled"

요약

C#에서 데코레이터 패턴을 활용하여 기능 토글링을 구현하는 방법을 살펴보았습니다. 이를 통해 기존의 기능을 수정하지 않고도 특정 기능을 동적으로 활성화 또는 비활성화할 수 있게 되었습니다.

데코레이터는 객체 지향 프로그래밍에서 유용하게 활용되며, 이 패턴을 통해 유연하고 확장 가능한 소프트웨어를 개발할 수 있습니다.

참고 자료