Kelas LinkedList ada dengan fungsi-fungsi seperti add_first (), add_last (), add_after (), remove_first (), remove_last (), dan remove ()
Sekarang ada kelas Stack yang menyediakan fungsionalitas seperti push (), pop (), peek () atau top (), dan untuk mengimplementasikan metode ini ia memperluas metode kelas LinkedList. Apakah ini merupakan pelanggaran terhadap Prinsip Pergantian Liskov?
Sebagai contoh, pertimbangkan case add_after () untuk menambahkan node di posisi ke-n dari Daftar Tertaut. Ini bisa dilakukan di kelas dasar tetapi tidak di kelas Stack. Apakah postconditions dilemahkan di sini atau Anda memodifikasi metode add_after () untuk ditambahkan ke bagian atas Stack?
Juga, jika bukan pelanggaran, apakah desain yang buruk ini? Dan bagaimana Anda mengimplementasikan fungsionalitas Stack menggunakan kelas LinkedList?
LinkedList
? Anda mungkin ingin memperhatikan saran dari Joshua Bloch tertentu (yang memainkan peran utama dalam merancang kerangka koleksi Java) ketika dia berkata "Lebih suka komposisi daripada warisan" - Mungkin memiliki bagian LinkedList
dalam kelas stack Anda, tetapi tidak benar-benar memperpanjangnya?
LinkedList
yang melakukan mengangkat berat di belakang layar (komposisi). Dengan begitu pengguna kode Anda tidak dapat secara tidak sengaja menggunakan Stack di mana mereka membutuhkan Daftar atau sebaliknya.