2015-05-03 2 views
5

С ТВЕРДЫМ принципом особенно SRP, мы так очень много классов ..
Я имею в виду, это так же, как вы хотите создать базу данных класса
Тогда у вас есть
DatabaseHandler класса, который обрабатывать базы данных (выберите, вставка, обновление, удаление и т. д.),

Класс DatabaseAdapter, который является расширенным классом PDO (может устанавливать предпочтительный режим по умолчанию в конструкции, новый метод подготовки, который непосредственно подготавливает оператор, связывает его с параметром и выполняет его,

Класс QueryBuilder, который является родителем класса SelectStatementBuilder, класса InsertStatementBuilder, DeleteStatementBuilde г класс, UpdateStatementBuilder класс (построить SQLStatement)

Expression класса, который строит выражение, необходимое в ИНЕКЕ

SQLStatement класс (который действует так же, как обычная строка, но его интерфейс SQLStatementInterface поэтому мы можем знать, что это SQL Заявление и т. Д.Содержит ли SRP в принципе SOLID код Лазаньи?

И я знаю, что будет больше занятий, если я выкопаю его глубже и снова реорганизую.

Выполняет ли реализация принципа SRP код Лазаньи? Является ли лазанья кодом в порядке?

ответ

5

В общем, SRP - это принцип проектирования, который требует от вас мыслить через различные обязанности (причины AKA для изменения) вашей системы. Его цель - помочь улучшить целостность системы. Другими словами, вещи, которые меняются вместе, остаются вместе.

Uncle Bob defined SRP как:

класс должен иметь только одну причину, чтобы изменить.

При использовании не на уровне детализации, SRP может быть интерпретирован как класс, который должен выполнять только одну очень маленькую вещь низкого уровня, что приводит к чрезмерной абстракции без каких-либо явных преимуществ. Прочитав его статью, вы заметите, что «причина изменения» определяется на уровне требований пользователя/клиента/потребителя. Простейшим примером является то, что если изменение моего требования к пользовательскому интерфейсу заставляет меня изменить класс, который содержит некоторые коды уровня доступа к данным, то у класса есть несколько причин для изменения (т. Е. Пользовательский интерфейс и доступ к данным), который нарушает SRP.

В вашем случае, если вы не создаете инструмент управления базами данных, нет причин поменять исходный класс базы данных на эти многие более мелкие классы. Если это типичное (сетевое) приложение, то, если вы хотите изменить базовую реализацию базы данных (скажем, от MySQL до базы данных в памяти во время тестирования), тогда все эти классы должны быть заменены в любом случае. Мог бы просто сохранить это просто.

Смежные вопросы