Nguyên tắc thay thế Liskov về cơ bản không cho phép bạn lạm dụng thừa kế thực hiện: bạn không bao giờ nên sử dụng kế thừa chỉ để tái sử dụng mã (có thành phần cho việc này)! Bằng cách tuân thủ LSP, bạn có thể khá chắc chắn rằng thực sự tồn tại một "mối quan hệ" là giữa siêu lớp của bạn và lớp con của bạn.
Những gì nó nói là các lớp con của bạn phải thực hiện tất cả các phương thức của lớp con theo cách tương tự như việc thực hiện các phương thức trong lớp con. Bạn không bao giờ nên ghi đè một phương thức với việc thực hiện NOP hoặc trả về null khi siêu kiểu ném ngoại lệ; được nêu trong Thiết kế theo các điều khoản Hợp đồng, bạn nên tôn trọng hợp đồng của phương thức từ siêu lớp khi ghi đè một phương thức. Một cách để bảo vệ chống lại việc phá vỡ nguyên tắc này là không bao giờ ghi đè một phương thức đã thực hiện; thay vào đó trích xuất một giao diện và thực hiện giao diện đó trong cả hai lớp.
Nguyên tắc phân chia giao diện , Nguyên tắc trách nhiệm đơn lẻ và Nguyên tắc Coehsion cao từ GRASP có liên quan đến nhau; họ đề cập đến thực tế rằng một thực thể chỉ chịu trách nhiệm cho một điều duy nhất để chỉ có một lý do để thay đổi để thay đổi được thực hiện rất dễ dàng.
Nó thực sự nói rằng nếu một lớp thực hiện một giao diện thì nó phải thực hiện và sử dụng tất cả các phương thức của giao diện đó. Nếu có các phương thức ar không cần thiết trong lớp cụ thể đó, thì giao diện không tốt và phải được chia thành hai giao diện, một giao diện chỉ có các phương thức cần thiết cho lớp gốc. Nó có thể được xem xét từ một POV, liên quan đến nguyên tắc trước đó bởi thực tế là nó không cho phép bạn tạo các giao diện lớn để việc triển khai chúng có thể phá vỡ LSP.
Bạn có thể thấy Nghịch đảo phụ thuộc trong Mô hình nhà máy; ở đây cả thành phần cấp cao (máy khách) và thành phần cấp thấp (cá thể được tạo) đều phụ thuộc vào sự trừu tượng hóa(giao diện). Một cách để áp dụng nó trong kiến trúc phân lớp: bạn không nên xác định giao diện cho một lớp trong lớp được triển khai mà trong mô-đun được gọi. Ví dụ, API cho lớp nguồn dữ liệu không nên được viết trong lớp nguồn dữ liệu mà trong lớp logic buisness, nơi cần được gọi. Theo cách này, lớp nguồn dữ liệu kế thừa / phụ thuộc vào hành vi được xác định trong logic buisness (do đó là đảo ngược) chứ không phải ngược lại (như cách thông thường). Điều này cung cấp sự linh hoạt trong thiết kế, cho phép logic nghiệp vụ hoạt động mà không có bất kỳ thay đổi mã nào, với một nguồn dữ liệu hoàn toàn khác.