私は次のクラスを書いています
public class UserApplication
{
private IUserRepository UserRepository { get; set; }
private IUserEmailerService UserEmailerService { get; set; }
public UserApplication(IUserRepository userRepository, IUserEmailerService userEmailerService)
{
this.UserRepository = userRepository;
this.UserEmailerService = userEmailerService;
}
public bool Authenticate(string login, string pass)
{
// Here I use UserRepository Dependency
}
public bool ResetPassword(string login, string email)
{
// Here I only use both Dependecies
}
public string GetRemeberText(string login, string email)
{
// Here I only use UserRepository Dependency
}
}
Unityを使用してインスタンスを管理しているので、1つのメソッドで両方の依存関係のみを使用していることに気付きました。そのため、コンテナーにこのクラスのインスタンスを提供するように依頼すると、両方の依存関係がこのクラスに挿入されますが、2つは必要ありません。すべてのメソッドのインスタンスなので、Authenticateuserではリポジトリのみが必要です。だから私はこれをするのは間違っていますか?このクラスのすべてのケースに使用する依存関係のみを持つ別の方法はありますか?
私はそれにコマンドパターンを使用することを考えているので、1つのメソッドで3つのクラスを分類し、その中に必要な依存関係のみを次のように分類します。
public class AuthenticateUserCommand : ICommand
{
private IUserRepository UserRepository { get; set; }
public string Login { get; set; }
public string Password { get; set; }
public void Execute()
{
// executes the steps to do that
}
}
public class ResetUserPasswordCommand : ICommand
{
private IUserRepository UserRepository { get; set; }
private IUserEmailerService UserEmailerService { get; set; }
public string Login { get; set; }
public string Email { get; set; }
public void Execute()
{
// executes the steps to do that
}
}