Я хочу знать, нахожусь ли я здесь на правильном пути, я программирую в основном для интерфейсов, поэтому я хочу знать, должны ли классы ниже вводиться через DI, или я должен создать экземпляр класса сам ...
Примечание: эти службы хранятся в моей основной библиотеке, а не в моем веб-приложении (asp.net mvc)
// IUserSession никогда не известно, этозависит от клиентского приложения, это никогда не известно, поэтому я должен внедрить все время
// IWorkflowService Мне нужно внедрить, так как клиентское приложение имеет несколько различных сервисов / пакетов, в зависимости от того, чтобизнес-правила могут отличаться
// IReadonlySession только 1 в моем приложении, поэтому мне никогда не нужно вводить?может отличаться в других клиентских вызовах, но маловероятно, что
// INotificationService всегда будет тем, что я говорю, это всегда будет одной вещью, поэтому я должен программировать с интерфейсома не внедрять?
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();
}
Вопрос:
Правильно ли выполнено создание объектов?Правильно ли я это реализовал?