[c#] 데코레이터를 이용한 인증 및 권한 부여

C#에서 데코레이터를 사용하여 인증 및 권한 부여를 구현하는 방법에 대해 알아보겠습니다.

1. 데코레이터란?

데코레이터는 객체의 동작을 런타임 시에 확장하기 위해 사용되는 디자인 패턴입니다. 이 패턴은 객체에 추가적인 기능을 덧붙일 수 있도록 해줍니다.

2. C#에서의 데코레이터 구현

using System;

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

// 기본 구현
public class ConcreteComponent : IComponent
{
    public void Operation()
    {
        Console.WriteLine("Do something");
    }
}

// 데코레이터
public abstract class Decorator : IComponent
{
    protected IComponent _component;

    public Decorator(IComponent component)
    {
        _component = component;
    }

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

// 인증 데코레이터
public class AuthDecorator : Decorator
{
    public AuthDecorator(IComponent component) : base(component) { }

    public override void Operation()
    {
        // 인증 로직 추가
        Console.WriteLine("Authentication logic");
        base.Operation();
    }
}

// 권한 데코레이터
public class PermissionDecorator : Decorator
{
    public PermissionDecorator(IComponent component) : base(component) { }

    public override void Operation()
    {
        // 권한 확인 로직 추가
        Console.WriteLine("Permission check logic");
        base.Operation();
    }
}

위의 예시에서는 데코레이터를 사용하여 기본 컴포넌트에 인증 및 권한 부여 기능을 추가하고 있습니다. AuthDecoratorPermissionDecoratorDecorator를 상속하여 기능을 추가하고 있습니다.

3. 사용 예시

class Program
{
    static void Main()
    {
        IComponent component = new ConcreteComponent();
        // 데코레이터를 이용하여 기본 컴포넌트에 인증 및 권한 부여 기능 추가
        component = new AuthDecorator(component);
        component = new PermissionDecorator(component);

        // 실행
        component.Operation();
    }
}

위의 예시에서는 ConcreteComponent를 생성한 후에 AuthDecoratorPermissionDecorator를 연결하여 실행하고 있습니다. 따라서 Operation이 호출될 때 인증 및 권한 부여 기능이 수행되고, 그 후에 기본 동작이 실행됩니다.

데코레이터를 사용하여 인증 및 권한 부여 기능을 추가하면 기존 코드를 수정하지 않고도 유연하게 기능을 확장할 수 있습니다.

이상으로 C#에서 데코레이터를 사용하여 인증 및 권한 부여를 구현하는 방법에 대해 살펴보았습니다.