SOLID مجموعهای از ۵ اصل طراحی شیءگرا (Object-Oriented Design) است که هدف آن این است کدها قابل نگهداری، قابل توسعه، تستپذیر و کموابسته (loosely coupled) باشند. این اصول باعث میشوند هنگام اضافه کردن قابلیتهای جدید، کمتر مجبور شوید کدهای قبلی را تغییر دهید.
- S - Single Responsibility Principle (اصل مسئولیت واحد) هر کلاس فقط یک دلیل برای تغییر داشته باشد؛ یعنی فقط یک مسئولیت مشخص را بر عهده بگیرد.
- O - Open/Closed Principle (اصل باز/بسته) کلاسها برای توسعه (Extension) باز باشند، اما برای تغییر (Modification) بسته باشند. یعنی بدون دست بردن در کدهای موجود، بتوان قابلیت جدید اضافه کرد.
- L - Liskov Substitution Principle (اصل جایگزینی لیسکوف) هر کلاس فرزند باید بتواند بدون ایجاد مشکل جایگزین کلاس والد خود شود. یعنی رفتار کلاس فرزند نباید قرارداد کلاس والد را نقض کند.
- I - Interface Segregation Principle (اصل تفکیک اینترفیس) به جای یک اینترفیس بزرگ، چند اینترفیس کوچک و تخصصی داشته باشید تا هر کلاس فقط متدهایی را پیادهسازی کند که واقعاً به آنها نیاز دارد.
- D - Dependency Inversion Principle (اصل وارونگی وابستگی) کلاسها باید به انتزاعها (Interface/Abstraction) وابسته باشند، نه به پیادهسازیهای واقعی. این اصل معمولاً با Dependency Injection (DI) پیادهسازی میشود.