Java Developer
15.7K subscribers
1.92K photos
145 videos
8 files
2.19K links
Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
👩‍💻 Принципы SOLID (Часть 1)

Что такое 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
Please open Telegram to view this post
VIEW IN TELEGRAM
12145🔥2