Trung BìnhDesign Patterns iconDesign Patterns

Liskov Substitution Principle (LSP) là gì? Khi nào bị vi phạm?

LSP quy định rằng các object của subclass phải có thể thay thế object của superclass mà không làm hỏng tính đúng đắn của chương trình.

Ví dụ vi phạm kinh điển: class RectanglesetWidth/setHeight, class Square extends Rectangle override cả hai để giữ tỷ lệ — khi code gọi setWidth(5) trên Square kỳ vọng height không đổi nhưng thực tế height cũng thay đổi, phá vỡ kỳ vọng. Dấu hiệu vi phạm LSP: subclass override method rồi throw exception, hoặc kiểm tra instanceof trước khi gọi method. Cách sửa: tách interface, dùng composition thay inheritance, hoặc tái thiết kế hierarchy.

Xem toàn bộ Design Patterns cùng filter theo level & chủ đề con.

Mở danh sách Design Patterns