Должны ли эти виды услуг вводиться в базовом классе? (по сравнению со статическими классами)

Мне было интересно.. если у меня есть такие сервисы, как ILoggingService, IMailerService, ICacheService. Это как-то часть инфраструктуры. Однако вы бы сделали их статическим классом или внедрили бы их в базовый класс, чтобы все производные классы получили доступ к ним как к одиночным? Как вы справляетесь с ними?

1 ответ

Решение

Зависимости часто представляют компоненты инфраструктуры. Не только электронная почта, но и доступ к данным любого рода могут считаться частью инфраструктуры. Такие сервисы лучше всего хранить как "правильные" зависимости, так как они реализуют поведение вашего приложения. Можно сказать, что они отвечают функциональным требованиям приложения.

Существует функциональная разница в том, было ли отправлено электронное письмо или запись сохранена в базе данных.

Однако такие вещи, как кэширование, представляют собой нефункциональные требования. Приложение работает без него, хотя было бы медленнее. Ведение журнала иногда попадает в эту категорию, а в других случаях это функциональное требование.

Многие компоненты инфраструктуры (такие как ведение журналов, аудит, кэширование, авторизация, измерение и т. Д.) Представляют собой сквозные проблемы, поэтому их часто лучше рассматривать как декораторы, которые иногда можно обобщить для АОП.

Другие вопросы по тегам