クラスLinkedListは、add_first()、add_last()、add_after()、remove_first()、remove_last()、remove()などの関数とともに存在します
現在、push()、pop()、peek()、またはtop()などの機能を提供するクラスStackがあり、これらのメソッドを実装するためにLinkedListクラスメソッドを拡張しています。これは、リスコフ代替原理の違反ですか?
たとえば、リンクリストのn番目の位置にノードを追加する場合のadd_after()の場合を考えます。これは基本クラスで実行できますが、Stackクラスでは実行できません。ここで事後条件が弱くなっていますか、それともadd_after()メソッドを変更してスタックの一番上に追加しますか?
また、違反ではない場合、これは悪い設計ですか?そして、LinkedListクラスを使用してStack機能をどのように実装しますか?
LinkedList
ますか?「継承よりも構成を優先する」と言ったときに、特定のJoshua Bloch(Javaコレクションフレームワークの設計で主要な役割を果たした)のアドバイスに注意する必要がLinkedList
あります。
LinkedList
舞台裏で重荷を持ち上げるタイプのプライベートデータメンバーを使用します(組成)。そうすれば、コードのユーザーが誤ってリストを必要とする場所でスタックを使用したり、その逆を行うことはできません。