Đây là một ví dụ cổ điển về cách mọi người quyết định vi phạm Nguyên tắc thay thế Liskov. Tôi đặc biệt không khuyến khích điều đó nhưng sẽ khuyến khích một giải pháp khác:
- Có lẽ lớp bạn đang viết không cung cấp chức năng mà giao diện quy định nếu nó không sử dụng tất cả các thành viên của giao diện.
- Ngoài ra, giao diện đó có thể được thực hiện nhiều thứ và có thể được tách ra theo Nguyên tắc phân chia giao diện.
Nếu trường hợp đầu tiên là trường hợp của bạn, chỉ cần không thực hiện giao diện trên lớp đó. Hãy nghĩ về nó giống như một ổ cắm điện trong đó lỗ trên mặt đất là không cần thiết để nó không thực sự gắn vào mặt đất. Bạn không cắm bất cứ thứ gì có mặt bằng và không có vấn đề lớn! Nhưng ngay khi bạn sử dụng thứ gì đó cần một nền tảng - bạn có thể gặp thất bại ngoạn mục. Tốt hơn hết là đừng đục lỗ trên mặt đất giả. Vì vậy, nếu lớp của bạn không thực sự làm những gì giao diện dự định, đừng thực hiện giao diện.
Dưới đây là một vài bit nhanh từ wikipedia:
Nguyên tắc thay thế Liskov có thể được xây dựng đơn giản là, "Đừng củng cố các điều kiện trước và không làm suy yếu các điều kiện sau".
Chính thức hơn, nguyên tắc thay thế Liskov (LSP) là một định nghĩa cụ thể về mối quan hệ phụ, được gọi là phân nhóm hành vi (mạnh), được đưa ra ban đầu bởi Barbara Liskov trong một địa chỉ chính của hội nghị năm 1987 có tên là trừu tượng hóa và phân cấp. Đây là một mối quan hệ ngữ nghĩa chứ không chỉ đơn thuần là cú pháp bởi vì nó dự định đảm bảo khả năng tương tác ngữ nghĩa của các loại trong một hệ thống phân cấp , [...]
Đối với khả năng tương tác ngữ nghĩa và khả năng thay thế giữa các triển khai khác nhau của cùng một hợp đồng - bạn cần tất cả chúng để cam kết thực hiện cùng một hành vi.
Nguyên tắc phân chia giao diện nói lên ý tưởng rằng các giao diện nên được tách thành các bộ gắn kết sao cho bạn không yêu cầu giao diện thực hiện nhiều thứ khác nhau khi bạn chỉ muốn một cơ sở. Hãy nghĩ lại về giao diện của ổ cắm điện, nó cũng có thể có bộ điều chỉnh nhiệt, nhưng nó sẽ khiến việc lắp đặt ổ cắm điện trở nên khó khăn hơn và có thể khiến việc sử dụng cho mục đích không sưởi ấm trở nên khó khăn hơn. Giống như một ổ cắm điện có bộ điều chỉnh nhiệt, giao diện lớn rất khó thực hiện và khó sử dụng.
Nguyên tắc phân tách giao diện (ISP) nói rằng không có máy khách nào bị buộc phải phụ thuộc vào các phương thức mà nó không sử dụng. [1] ISP chia các giao diện rất lớn thành các giao diện nhỏ hơn và cụ thể hơn để khách hàng sẽ chỉ phải biết về các phương thức mà họ quan tâm.