หลักการทดแทน Liskovโดยพื้นฐานแล้วไม่อนุญาตให้คุณใช้การสืบทอดการใช้งานมากเกินไป: คุณไม่ควรใช้การสืบทอดเพียงเพื่อนำโค้ดกลับมาใช้ใหม่ (มีองค์ประกอบสำหรับสิ่งนี้)! โดยการปฏิบัติตาม LSP คุณสามารถมั่นใจได้ว่ามี "is-a สัมพันธ์" ระหว่างซูเปอร์คลาสและคลาสย่อยของคุณ
สิ่งที่กล่าวคือคลาสย่อยของคุณต้องใช้วิธีการทั้งหมดของคลาสย่อยในวิธีที่คล้ายคลึงกับการใช้งานเมธอดในคลาสย่อย คุณไม่ควรแทนที่เมธอดด้วยการใช้ NOP หรือคืนค่า null เมื่อ supertype ส่งข้อยกเว้น ที่ระบุไว้ในข้อกำหนดการออกแบบโดยสัญญาคุณควรเคารพสัญญาของวิธีการจาก superclass เมื่อเอาชนะวิธี วิธีที่จะป้องกันการละเมิดหลักการนี้คือการไม่ใช้วิธีการที่นำมาใช้ แยกอินเตอร์เฟสและใช้อินเตอร์เฟสนั้นในทั้งสองคลาสแทน
หลักการแยกส่วนเชื่อมต่อหลักการความรับผิดชอบเดี่ยวและหลักการ Coehsion สูงจาก GRASP เกี่ยวข้องอย่างใด พวกเขาอ้างถึงความจริงที่ว่านิติบุคคลควรจะรับผิดชอบเพียงสิ่งเดียวเท่านั้นเพื่อให้มีเพียงหนึ่งเหตุผลในการเปลี่ยนแปลงเพื่อให้การเปลี่ยนแปลงนั้นทำได้ง่ายมาก
จริงๆแล้วมันบอกว่าถ้าคลาสใช้อินเทอร์เฟซก็จะต้องใช้และใช้วิธีการทั้งหมดของอินเทอร์เฟซเหล่านั้น หากมีวิธีการที่ไม่ต้องการในคลาสนั้นอินเทอร์เฟซไม่ดีและต้องแบ่งออกเป็นสองส่วนอินเทอร์เฟซที่มีเพียงวิธีที่จำเป็นโดยคลาสเดิม มันสามารถมองเห็นได้จาก POV ที่เกี่ยวข้องกับหลักการก่อนหน้านี้โดยความจริงที่ว่ามันไม่อนุญาตให้คุณสร้างอินเตอร์เฟสขนาดใหญ่เพื่อให้การใช้งานของพวกเขาอาจทำลาย LSP
คุณสามารถดูการพึ่งพาการพึ่งพาในรูปแบบโรงงาน ที่นี่ทั้งองค์ประกอบระดับสูง (ไคลเอนต์) และส่วนประกอบระดับต่ำ (แต่ละอินสแตนซ์ที่จะสร้าง) ขึ้นอยู่กับสิ่งที่เป็นนามธรรม(อินเทอร์เฟซ) วิธีนำไปใช้ในสถาปัตยกรรมแบบเลเยอร์: คุณไม่ควรกำหนดอินเทอร์เฟซกับเลเยอร์ในเลเยอร์ที่นำมาใช้ แต่ในโมดูลที่เรียกว่า ตัวอย่างเช่น API ไปยังเลเยอร์แหล่งข้อมูลไม่ควรเขียนในเลเยอร์แหล่งข้อมูล แต่ในเลเยอร์ตรรกะของธุรกิจที่จำเป็นต้องเรียกใช้ ด้วยวิธีนี้เลเยอร์แหล่งข้อมูลสืบทอด / ขึ้นอยู่กับพฤติกรรมที่กำหนดไว้ในตรรกะธุรกิจ (เช่นการกลับกัน) และไม่กลับกัน (เช่นเดียวกับในลักษณะปกติ) สิ่งนี้ให้ความยืดหยุ่นในการออกแบบช่วยให้ตรรกะทางธุรกิจทำงานได้โดยไม่ต้องเปลี่ยนรหัสใด ๆ กับแหล่งข้อมูลอื่นที่แตกต่างกันโดยสิ้นเชิง