Add_first (), add_last (), add_after (), remove_first (), remove_last () ve remove () gibi işlevlerle bir sınıf LinkedList var.
Şimdi push (), pop (), peek () veya top () gibi işlevler sağlayan bir Sınıf Stack var ve bu yöntemleri uygulamak için LinkedList sınıf yöntemlerini genişletiyor. Bu Liskov İkame İlkesinin ihlali midir?
Örneğin, Bağlantılı Listenin n'inci konumuna düğüm eklemek için add_after () örneğini düşünün. Bu temel sınıfta yapılabilir, ancak Stack sınıfında yapılamaz. Burada son koşullar zayıflıyor mu yoksa yığının en üstüne eklemek için add_after () yöntemini değiştiriyor musunuz?
Ayrıca, bir ihlal değilse, bu kötü tasarım mı? LinkedList sınıfını kullanarak Stack işlevini nasıl uygularsınız?
LinkedList
? "Miras üzerinde kompozisyonu tercih et" dediğinde belirli bir Joshua Bloch'un tavsiyesine (Java koleksiyonları çerçevesini tasarlamada büyük rol oynamış) dikkat etmek isteyebilirsiniz - Belki de LinkedList
yığın sınıfınızın içinde olabilirsiniz, ama aslında genişletmeyin?
LinkedList
perde arkasında (kompozisyon) ağır kaldırma yapan özel bir veri üyesi kullanırsınız . Bu şekilde, kodunuzun kullanıcıları yanlışlıkla bir Listeye ihtiyaç duydukları bir Yığını kullanamaz veya tam tersi.