คลาส LinkedList มีอยู่พร้อมกับฟังก์ชั่นเช่น add_first (), add_last (), add_after (), remove_first (), remove_last () และ remove ()
ขณะนี้มีคลาสสแต็กที่จัดเตรียมฟังก์ชันการใช้งานเช่น push (), pop (), peek () หรือ top () และเพื่อใช้เมธอดเหล่านี้จะขยายเมธอดคลาส LinkedList นี่เป็นการละเมิดหลักการทดแทนของ Liskov หรือไม่?
ตัวอย่างเช่นพิจารณา case add_after () เพื่อเพิ่มโหนดที่ตำแหน่งที่ n ของรายการที่เชื่อมโยง สามารถทำได้ในคลาสพื้นฐาน แต่ไม่สามารถอยู่ในคลาสสแต็กได้ postconditions ถูกทำให้อ่อนลงที่นี่หรือคุณปรับเปลี่ยนวิธี add_after () เพื่อเพิ่มไปยังด้านบนสุดของสแต็กหรือไม่
นอกจากนี้หากไม่เป็นการละเมิดการออกแบบที่ไม่ดีนี้เป็นอย่างไร และคุณจะใช้ฟังก์ชั่น Stack โดยใช้คลาส LinkedList ได้อย่างไร
LinkedList
หรือไม่ คุณอาจต้องการฟังคำแนะนำของ Joshua Bloch (ผู้ที่มีบทบาทสำคัญในการออกแบบเฟรมเวิร์กคอลเลกชัน Java) เมื่อเขาพูดว่า "ชอบองค์ประกอบมากกว่าการสืบทอด" - อาจมีLinkedList
คลาสสแต็กของคุณอยู่บ้าง
LinkedList
ที่ยกของหนัก ๆ ไว้ด้านหลังฉาก (องค์ประกอบ) วิธีนี้ทำให้ผู้ใช้รหัสของคุณไม่สามารถใช้งานสแต็กโดยไม่ได้ตั้งใจซึ่งพวกเขาต้องการรายการหรือในทางกลับกัน