Liskov Substitution Principle trong Design Pattern

Liskov Substitution Principle là nguyên tắc mà khi chúng ta extend một class, chúng ta phải đảm bảo tính đúng đắn của class đó.

Một ví dụ mà các bạn thường thấy khi tìm hiểu về nguyên tắc này đó là hình chữ nhật phải là hình chữ nhật, chiều rộng và chiều dài phải luôn luôn khác nhau:

Các bạn không nên extends class định nghĩa hình chữ nhật để xây dựng class hình vuông rồi định nghĩa 2 cạnh của hình vuông luôn bằng nhau:

Để khi chúng ta khởi tạo 2 đối tượng Rectangle với 2 implementation khác nhau, kết quả khi tính diện tích lại khác nhau, mặc dù chúng đều là hình chữ nhật và có cùng chiều dài và chiều rộng:

Kết quả:

Để giải quyết vấn đề trong trường hợp này, các bạn nên introduce một interface Shape với một phương thức abstract là area():

2 class Rectangle và Square lúc này sẽ implement interface Shape:

và:

Và khi tính diện tích của 2 hình trên:

kết quả sẽ luôn đúng đắn:

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *