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

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

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

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

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

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

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир