[c#] 데코레이터를 이용한 유효성 검사
C#에서 데코레이터를 사용하여 객체에 유효성 검사를 쉽게 추가할 수 있습니다. 데코레이터는 객체를 감싸고, 해당 객체의 동작을 변경하지 않으면서 새로운 기능을 추가합니다. 유효성 검사를 위해 데코레이터를 사용하면 중복된 코드를 제거하고 유지보수성을 높일 수 있습니다.
데코레이터 클래스 작성
using System;
public abstract class ValidatorDecorator : IValidator
{
protected IValidator _validator;
public ValidatorDecorator(IValidator validator)
{
_validator = validator;
}
public virtual ValidationResult Validate(object value)
{
return _validator.Validate(value);
}
}
위 코드에서 ValidatorDecorator
는 IValidator
를 구현하고, Validate
메서드를 오버라이드하여 유효성 검사 로직을 추가할 수 있습니다.
구체적인 데코레이터 클래스 작성
using System;
public class RequiredFieldValidator : ValidatorDecorator
{
public RequiredFieldValidator(IValidator validator) : base(validator) { }
public override ValidationResult Validate(object value)
{
if (value == null || string.IsNullOrWhiteSpace(value.ToString()))
{
return new ValidationResult(false, "This field is required.");
}
return _validator.Validate(value);
}
}
위 코드에서 RequiredFieldValidator
는 ValidatorDecorator
를 상속받고, 유효성 검사를 수행하는 로직을 추가합니다.
데코레이터 활용
var validator = new RequiredFieldValidator(new EmailFormatValidator(new MaxLengthValidator(50)));
var result = validator.Validate(emailInput);
위 코드에서 RequiredFieldValidator
, EmailFormatValidator
, MaxLengthValidator
와 같은 데코레이터들을 조합하여 유효성 검사 체인을 만들 수 있습니다.
이처럼 C# 데코레이터를 효과적으로 활용하여 유효성 검사를 확장하고 쉽게 추가할 수 있습니다.