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

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

1 Ответ

5 голосов
/ 08 декабря 2011

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

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

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

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

...