SOLID là một tập hợp năm nguyên tắc thiết kế hướng đối tượng thúc đẩy code dễ bảo trì, linh hoạt, dễ hiểu: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, và Dependency Inversion. Chúng hướng dẫn thiết kế OO tốt.
Năm nguyên tắc
S — SINGLE RESPONSIBILITY → một class nên có MỘT lý do để thay đổi (một trách nhiệm/nhiệm vụ)
→ đừng làm class làm quá nhiều (tránh God object)
O — OPEN/CLOSED → mở cho MỞ RỘNG, đóng cho SỬA ĐỔI → thêm hành vi mới mà không thay đổi
code hiện có (ví dụ qua polymorphism/strategy)
L — LISKOV SUBSTITUTION → subtype phải thay thế được cho base type của chúng (một subclass
không nên phá vỡ hành vi được mong đợi từ parent)
I — INTERFACE SEGREGATION → nhiều interface cụ thể > một interface béo → client không nên
phụ thuộc vào các method chúng không dùng
D — DEPENDENCY INVERSION → phụ thuộc vào ABSTRACTION, không phải concrete implementation → module
cấp cao không phụ thuộc vào chi tiết cấp thấp (liên quan đến DI)
