.Net Review
.Net Review
Канал о технологиях .Net и не только. Здесь вы найдете разборы, уроки, фишки технологий и языков программирования... https://t.me/dotnetreview
Читать 2 минуты

Принципы SOLID. Принцип единственной обязанности.

Image for post

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

Реализация

Представим, что мы ведем статистику пользователей какого-нибудь сервиса. Мы получаем персональные данные пользователя и должны иметь возможность добавить пользователя в систему, удалить и посмотреть данные пользователей. Для начала реализуем модель пользователя.

Image for post

Отлично, теперь реализуем систему работы с пользователями.

Image for post

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

Image for post

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

Image for post

Далее изменим класс UserService.

Image for post

Теперь функционал хранения вынесен в другой класс, который этим занимается. Осталось инициализировать всё это и запустить.

Image for post

Результат выполнения:

Image for post

В итоге была создана система, которая позволяет вынести функционал хранения в другой класс (параллельно с этим реализован паттерн стратегия), однако можно ещё усовершенствовать, например реализовать такую же систему с интерфейсом для отображения информации, сделать реализацию интерфейса ISaveDataService для работы с БД.

Весь код консольного приложения можно найти тут. Спасибо за внимание!

Наш телеграмм канал: https://t.me/dotnetreview

316 просмотров
Добавить
Еще
.Net Review
Канал о технологиях .Net и не только. Здесь вы найдете разборы, уроки, фишки технологий и языков программирования... https://t.me/dotnetreview
Подписаться