0

どちらのクラスの継承ツリーも他方から継承するように変更できないという制限がある場合、コンテキストの境界を橋渡しするために、それぞれが独立した継承ツリーを持つ 2 つのクラスに参加するにはどうすればよいでしょうか?

つまり、アイテムがデータベースに保存されたエンティティである場合、次のようになります。

public class Stockitem : StockItemBase {
...
}

描画コンポーネントを使用して表示する必要があるとしましょう:

Public class GraphicNode : BaseNode { ... }

stockitemgraphicnode共通メンバーが多いので、単純にサブクラス化するとよいでしょう。

ソリューションを設計する最善の方法は何ですか?

4

4 に答える 4

2

構成。

どちらからも継承しないが、その中で使用したい両方のクラスのインスタンスを持つ新しいクラスを作成し、呼び出したいメソッドを公開します。

私よりも主題に関するはるかに優れたとりとめのないGoogleの「継承よりも構成」

于 2009-02-25T10:15:46.307 に答える
1

多重継承ではそれが可能であり、ツリーが完全に独立していれば、ダイヤモンドの問題は発生しません。

于 2009-02-25T10:14:34.530 に答える
0

StockItem 内に GraphicNode オブジェクトのインスタンスがある場合があります。

このコンポジションという名前: http://en.wikipedia.org/wiki/Object_composition

次に、実際の作業を同封の GraphicNode に委任するだけのメソッドを StockItem に作成します。

于 2009-02-25T10:14:42.033 に答える