Page 53 - Ký sự code dạo
P. 53
LẬP TRÌNH VIÊN ĐÂU PHẢI CHỈ BIẾT CODE
3. Liskov Substitution Principle
Nguyên lý thứ ba, tương ứng với chữ L trong SOLID. Nội dung nguyên
lý:
Trong một chương trình, các object của class con có thể thay
thế class cha mà không làm thay đổi tính đúng đắn của chương
trình
Hơi khó hiểu nhỉ? Không sao, lúc mới đọc mình cũng vậy. Hãy tưởng
tượng bạn có 1 class cha tên Vịt. Các class VịtBầu, VịtXiêm có thể kế
thừa class này, chương trình chạy bình thường. Tuy nhiên nếu ta viết
class VịtChạyPin, cần pin mới chạy được. Khi class này kế thừa class
Vịt, vì không có pin không chạy được, sẽ gây lỗi. Đó là 1 trường hợp vi
phạm nguyên lý này.
4. Interface Segregation Principle
Nguyên lý thứ tư, tương ứng với chữ I trong SOLID. Nội dung nguyên
lý:
Thay vì dùng một interface lớn, ta nên tách thành nhiều
interface nhỏ, với nhiều mục đích cụ thể
Nguyên lý này khá dễ hiểu. Hãy tưởng tượng chúng ta có 1 interface
lớn với khoảng 100 methods. Việc implement sẽ khá cực khổ, ngoài ra
còn có thể dư thừa vì 1 class không cần dùng hết 100 method. Khi tách
interface ra thành nhiều interface nhỏ, gồm các method liên quan tới
nhau, việc implement và quản lý sẽ dễ hơn.
5. Dependency Inversion Principle
Nguyên lý cuối cùng, tương ứng với chữ D trong SOLID. Nội dung
nguyên lý:
1. Các module cấp cao không nên phụ thuộc vào các module cấp
thấp. Cả 2 nên phụ thuộc vào abstraction.
2. Interface (abstraction) không nên phụ thuộc vào chi tiết, mà
ngược lại. (Các class giao tiếp với nhau thông qua interface,
không phải thông qua implementation.)
Nguyên lý này khá lắt léo, mình sẽ lấy ví dụ thực tế. Chúng ta đều biết
2 loại đèn: đèn tròn và đèn huỳnh quang. Chúng cùng có đuôi tròn,
51