[c#] 데코레이터를 이용한 압축 및 암호화

이 포스트에서는 C#에서 파일을 압축하고 암호화하는 방법을 배우겠습니다. 이를 위해 데코레이터 패턴을 사용하여 압축 및 암호화 로직을 쉽게 확장할 수 있도록 만들어 보겠습니다.

데코레이터 패턴 소개

데코레이터 패턴은 객체를 동적으로 확장하는 디자인 패턴으로, 기본 객체에 추가적인 기능을 런타임 시에 쉽게 적용할 수 있도록 해줍니다. 이 패턴은 기본 객체를 감싸는 데코레이터 클래스를 정의하고, 이를 사용하여 필요에 따라 여러 기능을 추가할 수 있습니다.

압축 및 암호화 데코레이터 구현

첫 번째로, 파일을 압축하는 데코레이터 클래스를 구현합니다.

public class CompressionDecorator : FileDecorator
{
    public override void Operate()
    {
        base.Operate();
        // 압축 로직을 여기에 구현합니다.
    }
}

다음으로, 암호화를 수행하는 데코레이터 클래스를 구현합니다.

public class EncryptionDecorator : FileDecorator
{
    public override void Operate()
    {
        base.Operate();
        // 암호화 로직을 여기에 구현합니다.
    }
}

사용 예제

이제 위에서 구현한 데코레이터를 사용하여 파일을 압축하고 암호화하는 예제를 살펴보겠습니다.

// 기본 파일 처리 클래스
public class FileProcessor
{
    public void Process()
    {
        // 파일 처리 로직을 구현합니다.
    }
}

// 압축 및 암호화 적용
FileProcessor processor = new FileProcessor();
processor = new CompressionDecorator(processor);
processor = new EncryptionDecorator(processor);
processor.Process();

위 예제에서는 먼저 FileProcessor 인스턴스를 만들고, 이를 CompressionDecoratorEncryptionDecorator로 각각 감쌌습니다. 이후 Process 메서드를 호출하면, 데코레이터들의 추가 기능이 순차적으로 수행됩니다.

이제 데코레이터 패턴을 활용하여 파일을 압축하고 암호화하는 방법에 대해 알아보았습니다. 데코레이터 패턴을 사용하면 새로운 기능을 쉽게 추가할 수 있으며, 기존 코드의 수정 없이도 다양한 기능을 확장할 수 있습니다.

참고 자료