Принципы SOLID

SOLID это аббревиатура пяти основных принципов дизайна классов в объектно-ориентированном проектировании — Single responsibility, Open-closed, Liskov substitution, Interface segregation и Dependency inversion.

Принцип единственной обязанности (Single responsibility principle)

На каждый класс должна быть возложена одна-единственная обязанность.

В объектно-ориентированном программировании принцип единственной обязанности обозначает, что каждый объект должен иметь одну обязанность и эта обязанность должна быть полностью инкапсулирована в класс. Все его сервисы должны быть направлены исключительно на обеспечение этой обязанности.

 

Принцип открытости/закрытости (Open/closed principle)

Программные сущности должны быть открыты для расширения, но закрыты для изменения.

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

 

Принцип подстановки Барбары Лисков (Liskov substitution principle)

Объекты в программе могут быть заменены их наследниками без изменения свойств программы.

Роберт С. Мартин определил этот принцип так:
Функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом.

Этот принцип является важнейшим критерием для оценки качества принимаемых решений при построении иерархий наследования. Сформулировать его можно в виде простого правила: тип S будет подтипом Т тогда и только тогда, когда каждому объекту oS типа S соответствует некий объект oT типа T таким образом, что для всех программ P, реализованных в терминах T, поведение P не будет меняться, если oT заменить на oS.

Более простыми словами можно сказать, что поведение наследуемых классов не должно противоречить поведению, заданному базовым классом, то есть поведение наследуемых классов должно быть ожидаемым для кода, использующего переменную базового типа.

 

Принцип разделения интерфейса (Interface segregation principle)

Много специализированных интерфейсов лучше, чем один универсальный.

Роберт С. Мартин определил этот принцип так:
Клиенты не должны зависеть от методов, которые они не используют.

 

Принцип инверсии зависимостей (Dependency inversion principle)

Зависимости внутри системы строятся на основе абстракций. Модули верхнего уровня не зависят от модулей нижнего уровня. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

комментарии (1)

Boristiq Boristiq 2021-01-10 21:05:10
Medication information for patients. Cautions. <a href="https://viagra4u.top">how to buy generic viagra without a prescription</a> in Canada. Some news about medicine. Read information now. [url=http://en.nextool.cn/index.php?g=&m=article&a=index&id=31&cid=17]Actual information about pills.[/url] [url=https://credibleresearchsources.com/study-hall/request/actual-information-about-drugs]Actual information about drugs.[/url] [url=http://pogaduchyweselne.pl/temat-Some-what-you-want-to-know-about-drug--62446]Some what you want to know about drug.[/url] 010177_