0

私は少しJavaに取り組んでいますが、この問題を解決する方法がよくわかりません。少なくとも避けたい醜さはありません。親抽象クラスがあります。たとえば、Item としましょう。Item には 3 つのサブクラス、具体的な ItemA と、2 つの具体的な子クラス ItemB1 と ItemB2 を持つ別の抽象クラス ItemB があります。ItemA は単なるスタブであり、Item 自体が具象化できる場合は存在する必要がないかもしれませんが、ソリューションによってはスタブが必要かどうかはわかりませんでした。これらはすべて、多数のコレクションに含まれるため、Item または親インターフェイスから継承する必要があります。

これで、アイテムの階層ができました。面白いのは、Items にオプションのオブジェクト フィールドがあることです。それが Functionality と呼ばれるオブジェクトであるとしましょう。どの具象クラスも潜在的に Functionality オブジェクトを持つことができますが、そうでないものもあります。一部には存在する必要がありますが、他のものには存在すべきではありません。Item で平手打ちし、そこにあるかどうかを常に nullchecking することは避けたいと思います。それは可能ですが、少し醜いと思います。階層を 2 つの別個のツリーに分割することも、1 つの余分なデータで多数のクラスを大部分複製することになるため、実際には実行可能ではないと思います。

このような場合はどうすればよいですか?最初はデコレータを使用することを考えていましたが、それは Functionality フィールドがあるかどうかを確認する必要があるたびに、それが FunctionalityDecoratedItem であるかどうかを狂ったように確認することを意味します。アイテムのさまざまなサブタイプを処理します。多分私はこれをつまんでいるだけなのかもしれません(私は時々細かいことにこだわる傾向があります)、または私の鼻がブロックしている明らかな解決策があるかもしれませんが、パターンやテクニックを見逃してしまったことを願っています.これをきれいに実装できます。

4

1 に答える 1