Chữ cái |
Nguyên lý |
Ý nghĩa |
S |
Single Responsibility |
Một class chỉ nên có một nhiệm vụ duy nhất |
O |
Open/Closed |
Có thể mở rộng class mà không sửa đổi code hiện có |
L |
Liskov Substitution |
Đối tượng của lớp con phải có thể thay thế các đối tượng của lớp cha mà không làm thay đổi tính đúng đắn của chương trình. VD: class Bird có phương thức Fly(), class Penguin kế thừa Bird → vi phạm nguyên tắc vì Penguin không thể bay. |
I |
Interface Segregation |
Nhiều interface nhỏ tốt hơn một interface lớn |
D |
Dependency Inversion |
a) Các module cấp cao không nên phụ thuộc vào các module cấp thấp. Cả hai nên phụ thuộc vào abstraction. b) Abstraction không nên phụ thuộc vào chi tiết. Chi tiết nên phụ thuộc vào abstraction. Nói chung các liên kết giữa các class không sử dụng kế thừa hoặc với nhiệm vụ khác nhau nên dùng interface hoặc abstract class hoặc scriptable object để hạn chế việc khai báo tham chiếu qua lại lẫn nhau ⇒ tạo liên kết lỏng lẻo |