SOLID (об'єктно-орієнтоване програмування)

SOLID — це абревіатура складена з перших літер п'яти базових принципів об'єктно-орієнтованого програмування та дизайну запропонована Робертом Мартіном.

Принципи SOLID використовуються для дизайну та розробки таких програмних систем, які, з великою ймовірністю, зможуть тривалий час розвиватися, розширятися і підтримуватися.

Опис

БукваАбревіатураНазва
SSRP

Принцип єдиного обов'язку (Single responsibility principle): Кожен об'єкт має виконувати лише один обов'язок.

OOCP

Принцип відкритості/закритості (Open/closed principle): Програмні сутності повинні бути відкритими для розширення, але закритими для змін. Розширення певного класу/інтерфейсу може здійснюватись через його успадкування.

LLSP

Принцип підстановки Лісков (Liskov substitution principle): Об'єкти в програмі можуть бути заміненими їх нащадками без зміни коду програми.

IISP

Принцип розділення інтерфейсу (Interface segregation principle): Багато спеціалізованих інтерфейсів краще за один універсальний. Інтерфейс може бути поділений на спеціалізовані ще на стадії проектування, заради майбутньої гнучкості програмних компонентів.

DDIP

Принцип інверсії залежностей (Dependency inversion principle): Залежності всередині системи будуються на основі абстракцій, що не повинні залежати від деталей; навпаки, деталі мають залежати від абстракцій. Модулі вищих рівнів не мають залежати від модулів нижчих рівнів.

SOLID та ООП

Дані принципи дуже тісно корелюють з принципами об'єктно-орієнтованого програмування. Зокрема принцип підстановки Барбари Лісков уособлює успадкування, він може трактуватись так: об'єкт, клас якого успадкований від іншого класу, отримує методи останнього. Принцип інверсії залежностей — це більш розширене трактування поліморфізму. А принцип єдиного обов'язку тісно пов'язаний з інкапсуляцією, що також передбачає існування інкапсульованого (відокремленого) набору методів.

Див. також

Основні поняття та суміжні теми

Принципи проектування та розробки

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.