私はここで正しい考えを持っているかどうかを知りたいです。私は主にインターフェースをプログラミングしているので、以下のクラスをDI経由で注入する必要があるのか、それとも自分でクラスをインスタンス化する必要があるのかを知りたいです...
注:これらのサービスは、Webアプリ(asp.net mvc)ではなくコアライブラリで保持されます
// IUserSessionは不明です。これはクライアントアプリによって異なります。これは不明なので、常に挿入する必要があります。
// IWorkflowServiceクライアントアプリにはいくつかの異なるサービス/パッケージがあるため、ビジネスルールが異なる可能性があるため、注入する必要があります
// IReadonlySessionは私のアプリでは1つしかないので、注入する必要はありませんか?他のクライアント呼び出しでは異なる可能性がありますが、可能性は低いです
// INotificationServiceは常に私が言うことであり、それは常に1つのものになるので、インターフェイスに対してプログラムする必要があり、注入する必要はありませんか?
private readonly IUserSession _userSession;
private readonly IReadOnlySession _readonlySession;
private readonly INotificationService _notificationService;
public Processor(IUserSession userSession, IWorkflowService workflowService)
: base(workflowService)
{
_userSession = userSession;
_readonlySession = new ReadonlySession();
_notificationService = new NotificationService();
}
// IReadonlySessionが挿入されます。これは、テストを実行しているかどうか、別のデータベースを使用しているか、別のクライアントアプリからコードを呼び出すかによって変わる可能性があるためです(可能性は低いですが可能です)。
public Processor(IUserSession userSession, IWorkflowService workflowService, IReadonlySession readonlySession)
: base(workflowService)
{
_userSession = userSession;
_readonlySession = readonlySession;
_notificationService = new NotificationService();
}
質問:
オブジェクトのインスタンス化は正しいですか?私がそれを実装した方法は正しいですか?