S.O.L.I.D

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