SOLID qisqartmasi birinchi 5ta obyektga yo’naltirilgan dizayn tamoyillarining bosh harflaridan olingan. Ushbu dizayn tamoyillari dasturni ishlab chiqish jarayonida uni keyinchalik qo’llab-quvvatlash va kengaytirishni ham ko’zda tutadi.
Beshta tamoyil:
S – Single-responsiblity
Yozilgan klassga o’zgarish kiritish uchun faqat yagona sabab bo’lishi, ya’ni klass faqat bir ish bajarishi kerak.
O – Open-closed
Obyektlar yoki klasslar kengaytirish uchun ochiq bo’lishi, ammo o’zgartirish uchun yopiq bo’lishi kerak. Bu degani – agar klassga biror o’zgarish qo’shishga to’g’ri kelsa, undan boshqa klassga meros qilib olib (inheritance), meros olgan klassda o’zgarish qilinadi.
L – Liskov Substitution
Klassni baza qilib olish uchun pointer yoki bog’lamlar (references) ishlatadigan funksiyalar klassning obyektini klassning o’zini bilmay turib ham ishlata olishi zarur.
I – Interface Segregation
Birnecha mijozga yo’naltirilgan interfeyslar (client-specific interfaces) bitta ko’pmaqsadli interfeysdan ko’ra yaxshiroq.
D – Dependency Inversion
Klasslar abstraksiyaga bog’lanishi kerak. Yuqori darajadigi modul past darajadagi modulga bog’lanishi kerakmas, lekin abstraksiyaga bog’lanishi zarur. Misol uchun, koddan bazaga murojaat qilishda abstrakt klassga murojaat qilinadi, to’g’ridan to’g’ri bazaga yoki bazaning klassiga emas.