1

クラス階層を持つJavaパッケージがあります。たとえば、サブクラスA1、A2、A3、...を持つクラスAです。

特定のアプリケーションでは、インターフェイス B を実装する (タイプ A の) クラスを作成する必要があります。これらの新しいクラスにはいくつかの共通点があるため、最初に考えたのは、A から継承して B を実装する基本クラス C を作成することでした。新しいクラス C1、C2、C3、... は C から継承するだけです。ただし、これらのクラス Ci の一部は、Aj の 1 つに存在する機能を必要とし、このメソッドによって、そのような機能を再実装する必要があります (機能はありません)。 A で定義)。一部の Ci については、さまざまな Ai から動作を継承したいと考えていますが、同時に C にあるすべての Ci に共通する他の動作も継承しています。もちろん、Java では多重継承が許可されていないため、実行できません。これを直接。MIがサポートされていないという理由だけで、これほど多くのものを再実装したくないのは確かですが、私はそうしません. それを回避する方法はありません。何か案は?

4

2 に答える 2

1

本当にサブクラス化する必要がありますか、それとも単にコードを再利用したいだけですか?

複合パターンとおそらく戦略パターンを使用しているように聞こえます:

クラス C には、タイプ A と場合によっては B のフィールドがあり、必要に応じてそれらに呼び出しを委譲します。これにより、継承 (単一または複数) の煩わしさなしに、コードの再利用のすべての利点が得られます。

于 2013-08-14T19:45:55.580 に答える