Первый принцип SOLID гласит что каждый класс выполняет лишь одну задачу. Я понимаю это так. Например есть у нас класс для работы с базой данных. В этот класс входят функции по отправке значений с ответом и без, для получения данных и т.д. И значит этот класс должен работать только с бд. А если мы добавим к примеру функцию парсинга из txt файла то это уже не соблюдение принципа. Я правильно понимаю?
Теоретически все так, но задачи бывают разные. Сначала проектируется все правильно, с разделением функций и уровней. А потом оказывается, что для решения задачи разные уровни должны иметь доступ к данным других уровней. И начинается либо перепроектирование, либо построение костылей.
Если класс работает с базой данных, то по принципу единственной ответственности он ничего другого делать не должен. Пусть с БД работает один класс, а с файлами - другой. Если их действия похожи (ну там сохранение, чтение, удаление данных), можете сделать интерфейс и реализовать его в этих классах. Также не поддавайтесь соблазну делать в вашем классе функции с какими-то дополнительными проверками, иначе он сильно разрастется и будет не круто. Эти проверки должны быть уровнем выше, там, где вы этот класс используете (а не внутри него).
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости