Как правильно реализовать парсер следуя принципу Single responsibility? Есть парсер, который парсит, к примеру, котят, собачат, автомобили, здания и инопланетян.
Этот класс занимается тем, что на вход получает кучку байт, а на выходе структуру данных.
Правильно-ли я понимаю, что у этого класса 5 причин для изменения? Ведь в разное время жизни может поменяться формат, этих самых, котят и собак с инопланетянами. А может и вообще не байтами приходить, а строками Json или Xml (Но тут очевидно, что строки можно просто в массив байт перевести).
Как правильно интерпретировать этот принцип?

21 Авг 2019 в 07:04
209 +1
0
Ответы
1

Да, вы правильно понимаете, что у данного класса есть 5 причин для изменения, так как он отвечает за разбор различного вида данных - котят, собачат, автомобилей, зданий и инопланетян. В результате, любое изменение формата данных или добавление новых типов данных потребует изменения данного класса.

Для того чтобы следовать принципу Single responsibility, можно разделить парсер на отдельные классы по типам данных, например: CatParser, DogParser, CarParser, BuildingParser, AlienParser. Каждый из этих классов будет отвечать только за парсинг конкретного типа данных. Таким образом, если изменится формат данных для котят, будет необходимо изменить только CatParser, а остальные парсеры останутся неизменными.

Для работы с различными форматами данных, например Json или Xml, можно создать отдельные классы для преобразования данных в нужный формат (например, JsonParser, XmlParser) и передавать уже преобразованные данные в соответствующие парсеры.

Таким образом, разделение парсера на отдельные классы по принципу Single responsibility поможет уменьшить зависимость между различными типами данных и изменить каждый парсер независимо от других, что упростит поддержку и расширение функциональности в будущем.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир