Лабораторно упражнение 1
Принципите SOLID
Принципите SOLID са въведени от Робърт Ч. Мартин в неговия труд от 2000 г. “Принципи на дизайна и модели на дизайна”. Това понятие по-късно са надградено от Майкъл Пера, който въвежда акронима SOLID. През последните 20 години тези пет принципа революционизираха света на обектно-ориентираното програмиране, променяйки начина, по който се пише софтуер.
Какво е SOLID и как помага за писането на по-добър код?
Казано по-просто, дизайнерските принципи на Мартин и Пера насърчават създаването на по-лесен за поддържане, разбираем и гъвкав софтуер. Следователно, въпреки неизбежноста от това, че приложенията растат по размер, тяхната сложност намалява!
Принципите на SOLID указват как да бъдат подредим функциите и структурите от данни в класове и как тези класове трябва да бъдат свързани помежду си.
Използването на думата „клас” не означава, че тези принципи са приложими само към обектно-ориентираното програмиране. Класът е просто свързано групиране на функции и данни. Всяка софтуерна система има такива групи, независимо дали се наричат класове или не. Принципите на SOLID се прилагат за тези групи от функции и данни и дори до по-ниско ниво като функция или структура от данни, които ще наричаме елементи/елементи на софтуера
Следните пет понятия съставляват SOLID принципите:
Инициал | Акроними | Концепция |
---|---|---|
S | SRP - Single Responsibility Principle | Принцип за единствена отговорност Това ще рече, че всеки елемент на софтуера има единствено предназначение и само една причина за промяна. |
O | OCP - Open-Closed Principle | Принципът отворено-затворено Същността е, че за да бъдат лесни за промяна всички елемент на софтуера, трябва да бъдат проектирани така, че да позволяват поведението на елементите да бъде променено чрез добавяне на нов код, а не промяна на съществуващ код. |
L | LSP - Liskov Substitution Principle | Принцип на заместване на Лисков Всеки наследник (подтип) трябва лесно да заменя всичките си базови типове. |
I | ISP - Interface Segregation Principle | Принцип за разделяне на интерфейсите Много на брой малки интерфейси е по-добре от един голям общ интерфейс. Това означава, че не е нужно даден код да зависи от неща, които не се използват |
D | DIP - Dependency Inversion Principle | Принцип на обръщане на зависимостите Всички класове от високо ниво трябва да дефинират абстракции и нито един не трябва да зависи от конкретен клас. Класовете от ниско ниво може да зависят от абстракциите. |