У меня есть класс SQLStatement, который создает запрос sql и поддерживает параметры привязки (которые хранятся в свойстве $ params).
У меня есть класс PDOAdapter, который действует просто как PDO, но имеет дополнительные функции, такие как prepare_query(SQL Statement $sql)
. Он подготавливает оператор sql и связывает параметр, который хранится в $sql->params
, а затем выполняет его.
И,
я думаю, что хочу добавить класс QueryEngine, который может выбирать, вставлять, обновлять, удалять, что означает, что он будет создавать оператор SQL с помощью SQLStatement strong> и заставьте PDOAdapter подготовить_запрос.
Я могу сказать, что в его обязанности входит создание sqlstatement на основе параметров метода с использованием класса SQLStatement И make PDOAdapter обработайте его. (Множественная ответственность)
Но я также могу сказать, что он отвечает за выполнение основных операций CRUD. (Единая ответственность)
Нарушает ли этот класс QueryEngine принцип единой ответственности?
Делает ли это SQLStatement и PDOAdapter тесной связью?
На самом деле, что такое точное определение слова Single? Я не понимаю, является ли перемещение стола одной или несколькими обязанностями (поднимите стол, переместите и положите).