私は Eclipse で ObjectAid を使用して、最新の Java プロジェクトの UML クラス図を生成しています。現在、このような状況がいくつかあり、2 つのインターフェース間に依存関係があり、インターフェースの 1 つの実装の 1 つがあります。 . ここに、foo
私が使用しているグラフィックライブラリがあります。
前の例では、 はオブジェクトを画面にFooCanvas
描画し、とそのインターフェイスである の両方が、メソッドへの引数としてオブジェクトを受け取ります。ITexture
FooCanvas
ICanvas
ITexture
この依存関係を引き起こすキャンバス クラスのメソッドは次のとおりです。
void drawTexture(ITexture texture, float x, float y);
さらに、Java のジェネリックを使用してメソッド シグネチャのバリエーションを試しました。
<T extends ITexture> void drawTexture(T texture, float x, float y);
この結果、インターフェイスと実装クラスの間の依存関係のみがあり、テクスチャ上のキャンバス オブジェクトによる依存関係がないクラス ダイアグラムが作成されました。これがより理想的かどうかはわかりません。
インターフェイスと実装の両方の別のインターフェイスへの依存関係は予想されるパターンですか、それともインターフェイスの依存関係から実装を「分離」しておくことが一般的ですか、または可能ですか? それとも、一般的な方法が理想的な解決策ですか?