0

Java で UI コンポーネントをどのように配線する必要があるかを理解しようとしています。通常の「サーバー」クラスに関する限り、私はインターフェイスを使用し、Spring を使用してすべてを注入しようとしています。UI の場合、同様のアプローチを使用する必要がありますか?

より正確には、次のことを考えてみましょう。

class Panel1 extends JPanel{

    public Panel1(Service service, DBConnector db);
}

class Panel2 extends JPanel{

    public Panel1(Delegate delegate, Executor exec);
}

class MainFrame{

    public MainFrame(Service service, DBConnector db, Delegate delegate, Executor exec){
        Panel1 p = new Panel1(service, db);
        Panel1 p = new Panel1(delegate, exec);
    }
}

class MainFrame{

    public MainFrame(Panel1 panel1, Panel2 panel2){
    }
}

通常のクラスと少しでも異なる場合、UI の世界でより適切なものは何かという一般的な感覚を得たかっただけです (おそらく、メイン フレームに多くのパネルが含まれている可能性があるため)。

4

1 に答える 1

3

UI に DI を使用している人を見たことがありません。これは、DI が (UI の構築と比較して) かなり新しい概念であるか、またはほとんどの人がUI 地獄にしばらく住んだ後にMVCに逃げ、MVC がすべての問題を解決するためである可能性があります。

また、ほとんどの UI は、ウィンドウ/ダイアログをボタンで開閉できるという意味で静的ですが、あるダイアログを別のダイアログに置き換えることはできません。それは便利ですが、ユーザー/消費者としての私がそれを行うことができる場合に限ります. 同じことを行う 2 つのダイアログを作成し、DI を使用して一方または他方を配線するのはほとんど意味がありません。2 つの異なるダイアログが必要な場合もあれば、1 つだけ必要な場合もあります。

UI の拡張がサポートされている場合 (Eclipse など)、プラグイン システムを使用して実行時に UI 要素を読み込み、そこにあるコードがメニューやツールバーなどを検出して要素を追加します。

e4 (Eclipse の最新のコード ベース) は多くのことに DI を使用しますが、UI の構築には使用しません。繰り返しになりますが、UI は通常、ユーザーが選択できる特定の場所に 2 つ以上のサービスが存在しないという意味で静的です。

したがって、DI を使用することは理にかなっているかもしれませんが、おそらく画期的な作業です (つまり、可能性の空間を探索し、複雑さの低い谷を自分で見つける必要があります)。

于 2012-12-04T17:12:10.427 に答える