2011-07-15 11 views
2

私は2つのクラスを持っています.1つはハードウェアに依存し、もう1つはそうでないものです(それぞれHardwareDependentとHardwareIndependentと呼ぶ)。ハードウェアに依存するクラスは、ハードウェアに依存しないクラスを拡張します。今私は、少なくともHardwareIndependentの拡張でなければならない別のクラスを持っていますが、私はそれがHardwareDependentの拡張であることを望んでいますので、追加の機能を活用するかもしれません。これを達成するためにリフレクションなどを使用する可能性はありますか?それとも、これは技術的に不可能なのでしょうか?私は他のすべてが失敗した場合、私はクラスを2回書くことができると思いますが、それは効果がないアプローチです。事前に助けてくれてありがとう。実行時のJavaの実行時の基底クラスのランタイム判定

答えて

2

継承はコンパイル時に固定されます。

あなたの新しいクラスがにならないように思えます。 HardwareIndependentまたはHardwareDependent; のいずれかのオブジェクトを使用してください。あなたは構成を望み、継承は望んでいません。あなたは3番目のクラスです(HardwareCompositeと呼ぶ)には、HardwareIndependentへの参照があります。実行時にinstanceof演算子でHardwareDependentであるかどうかを確認し、存在する場合はHardwareDependentにキャストし、提供する追加機能を使用することができます。

デザインで継承とコンポジションのコンセプトを組み合わせる必要がある場合は、ファサードとファクトリのパターンを調べることができます。

関連する問題