Недавно я прочитал статью, в которой описывается, как они явно могут нарушить Рекомендуемая цена. И вот я совсем запутался, потому что давно писал одиночные классы с сеттерами и геттерами.
Кроме того, я нашел это, но это не имеет ничего общего с SRP
Ну, на первый взгляд, и геттеры, и сеттеры не нарушают принцип единой ответственности, потому что их логика "принадлежит" только текущему классу. Они могут получить доступ/записать членов класса, которые «служат» одной цели. Отлично.
Но подождите, давайте сначала определим основные термины:
Доступ к данным = как сеттеры, так и геттеры
Обработка данных = обработка данных, такие операции, как CRUD
, проверка и т. д.
Если это так, то у нас есть две разные обязанности в рамках одного класса, что нарушает SRP.
Предположим на мгновение, что, чтобы не нарушать SRP, мы определим доступ к данным и манипулирование данными в разных классах.
class DA { // <- Data Access
public string getName() {
return this.name;
}
public string setName(name) {
this.name = name;
}
}
class DataHandler {
public DataHandler(da) { // <- Inject an instance of DA
this.da = da;
}
public bool validate() {
// validation stuff
}
}
Выглядит нормально, потому что мы не нарушаем указанный SRP. Но здесь у меня есть только один сеттер и только один геттер в классе DA.
Теперь вопросы:
1) Должен ли я всегда создавать еще один класс DA, даже если у меня есть только один сеттер и геттер, просто чтобы он не нарушал SRP?
2) Действительно ли сеттеры и геттеры нарушают SRP и не должны ли они никогда использоваться ни в каком классе?
3) И если да, то всегда ли внедрение зависимостей является ответом!?