.Net Review
Принципы SOLID. Принцип единственной обязанности.
Первый из принципов SOLID - принцип единственной обязанности. Он подразумевает, как следует из названия, что класс должен решать определенную задачу и ничего больше. Подробнее о реализации далее в этой статье.
Реализация
Представим, что мы ведем статистику пользователей какого-нибудь сервиса. Мы получаем персональные данные пользователя и должны иметь возможность добавить пользователя в систему, удалить и посмотреть данные пользователей. Для начала реализуем модель пользователя.
Отлично, теперь реализуем систему работы с пользователями.
Здесь реализован сервис работы с пользователем со всем необходимым функционалом. Вроде всё отлично, но в один момент от клиента приходит запрос, что нам необходимо в каком-то случаем иметь возможность работы с пользователями локально, а в каком-то хранить в БД. Проблема в том, что главной задачей класса UserService является работа с данными, а не их хранение. Для решения этой проблемы напишем интерфейс, в котором будет описания функционала по хранению и получению данных.
В этом интерфейсе для сервиса описан функционал по добавлению, удалению и получению данных. За счет того, что используется обобщение - можно использовать его для реализации хранения разных типов. Теперь реализуем интерфейс для хранения данных локально.
Далее изменим класс UserService.
Теперь функционал хранения вынесен в другой класс, который этим занимается. Осталось инициализировать всё это и запустить.
Результат выполнения:
В итоге была создана система, которая позволяет вынести функционал хранения в другой класс (параллельно с этим реализован паттерн стратегия), однако можно ещё усовершенствовать, например реализовать такую же систему с интерфейсом для отображения информации, сделать реализацию интерфейса ISaveDataService для работы с БД.
Весь код консольного приложения можно найти тут. Спасибо за внимание!
Наш телеграмм канал: https://t.me/dotnetreview