Что такое SOLID?
🟣 S: Single Responsibility Principle (Принцип единственной ответственности).
🟣 O: Open-Closed Principle (Принцип открытости-закрытости).
🟣 L: Liskov Substitution Principle (Принцип подстановки Барбары Лисков).
🟣 I: Interface Segregation Principle (Принцип разделения интерфейса).
🟣 D: Dependency Inversion Principle (Принцип инверсии зависимостей).
1. Принцип единственной ответственности
Класс должен быть ответственен лишь за что-то одно. Если класс отвечает за решение нескольких задач, его подсистемы, реализующие решение этих задач, оказываются связанными друг с другом. Изменения в одной такой подсистеме ведут к изменениям в другой.
Рассмотрим код:
class Animal {
constructor(name: string){ }
getAnimalName() { }
saveAnimal(a: Animal) { }
}Класс
Animal описывает какое-то животное и нарушает принцип единственной ответственности:В соответствии с принципом класс должен решать лишь какую-то одну задачу. Он же решает две, занимаясь работой с хранилищем данных в методе saveAnimal и манипулируя свойствами объекта в конструкторе и в методе getAnimalName.
Как такая структура класса может привести к проблемам?
Если изменится порядок работы с хранилищем данных, то придётся вносить изменения во все классы, работающие с хранилищем. Такая архитектура не отличается гибкостью, изменения одних подсистем затрагивают другие, что напоминает эффект домино.
Приведём в порядок и создадим ещё один класс, единственной задачей которого является работа с хранилищем, в частности — сохранение в нём объектов класса
Animal:class Animal {
constructor(name: string){ }
getAnimalName() { }
}
class AnimalDB {
getAnimal(a: Animal) { }
saveAnimal(a: Animal) { }
}В следующих частях мы рассмотрим остальные принципы SOLID, а пока что оставьте свои реакции:
❤️ — если было полезно
🕺 — если уже знаком с SOLID
«Проектируя классы, мы должны стремиться к тому, чтобы объединять родственные компоненты, то есть такие, изменения в которых происходят по одним и тем же причинам. Нам следует стараться разделять компоненты, изменения в которых вызывают различные причины» — Стив Фентон.
➡️ Java Developer | #полезное #solid
