2

PureDataと通信するJavaのインターフェースを使用しています。そうするために、私のクラスは特定のクラスを拡張する必要がありMaxObjectます。循環バッファーであるクラスを設計しているときに、Java のIteratorクラスを拡張する必要があることに気付きました。したがって、同時に2つのクラスを拡張する必要があります。

私の推測では、唯一の解決策は、2 つの異なるクラスを作成し、そのうちの 1 つを他のクラスのコンポーネントにすることです。しかし、それが唯一の解決策ですか?それは最高のものですか?

さらに、2 つのクラスから継承する必要がある場合はいつでも、それは設計が悪いためですか? このクラスを解決する設計パターンはありますか?

ありがとうございました

4

3 に答える 3

12

Iteratorクラスではなく、インターフェースです。そのため、拡張するのではなく、実装します。インターフェイスはいくつでも実装できます。唯一の制限は、1 つのクラスしか拡張できないことです。

あなたの場合:

class MyClass extends MaxObject implements Iterator<Type>
于 2010-12-23T19:32:26.330 に答える
2

編集:拡張されているものをもっと詳しく読むべきでした。EboMike の言うとおりです。Iterator クラスを拡張する必要はありません。

DDofD のように聞こえます: http://javacodeonline.blogspot.com/2009/08/deadly-diamond-of-death.html

于 2010-12-23T19:32:27.347 に答える
2

Iteratorインターフェースです。理論的な観点からは、MaxObject の拡張と実装に反対するものは何もありませんIterator

情報が不足しているため、これが良いアイデアかどうかはわかりませんが、悪い予感がします。

于 2010-12-23T19:33:33.460 に答える