UseCase

  • ์˜ค์ง ๋„๋ฉ”์ธ ๋กœ์ง๋งŒ์„ ์ƒ๊ฐํ•ด์„œ ์„ค๊ณ„.

  • ํ•˜๋‚˜์˜ UseCase๋Š” ์˜ค์ง ํ•˜๋‚˜์˜ ๋ช…ํ™•ํ•œ ์‚ฌ์šฉ ์šฉ๋„๋งŒ ์žˆ์Œ.

  • UseCase๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ๋งŒ์„ ๊ฐ€์ง„๋‹ค.

  • ๋ฐ˜๋“œ์‹œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.

public interface ISignInUseCase
{
    public UniTask<SignInResponseData> SignIn(SignInRequestData signInData);

    public class SignInRequestData
    {
        public string ID { get; private set; }
        public string Password { get; private set; }
        
        public SignInRequestData(string id, string password)
        {
            ID = id;
            Password = password;
        }
    }
    
    public class SignInResponseData
    {
        public bool IsSuccess { get; private set; }
        
        public SignInResponseData(bool isSuccess)
        {
            IsSuccess = isSuccess;
        }
    }
}
public class SignInUseCase : ISignInUseCase
{
    private readonly ISignInRepository _accountRepository;

    [Inject]
    public SignInUseCase(ISignInRepository accountRepository)
    {
        _accountRepository = accountRepository;
    }

    public async UniTask<ISignInUseCase.SignInResponseData> SignIn(ISignInUseCase.SignInRequestData signInData)
    {
        return await SignInInternal(signInData);
    }

    private async UniTask<ISignInUseCase.SignInResponseData> SignInInternal(ISignInUseCase.SignInRequestData signInData)
    {
         var requestData =
            new ISignInRepository.SignInRequestData(signInData.ID, signInData.Password);
        var response = await _accountRepository.SignIn(requestData);
        return new ISignInUseCase.SignInResponseData(response.IsSuccess);
    }
}

Last updated