スパゲッティからGuiceでの依存性注入の使用に変換したいSwingアプリケーションがあります。Guiceを使用して構成やタスクキューなどのサービスを提供することはうまくいきましたが、私は今アプリのGUIから始めており、どのように進めるかわかりません。
アプリケーションは基本的に、JFrame
に一連のタブを備えたJTabbedPane
です。各タブはJPanel
、さまざまなコンポーネントをレイアウトする個別のサブクラスであり、特定のボタンが押されたときにアクションを実行するためのサービスが必要です。
現在のアプリケーションでは、これは次のようになります。
@Inject
public MainFrame(SomeService service, Executor ex, Configuration config) {
tabsPane = new JTabbedPane();
// Create the panels for each tab and add them to the tabbedpane
somePanel = new SomeTabPanel(service, ex, config);
tabsPane.addTab("Panel 1", somePanel);
someOtherPanel = new SomeOtherTabPanel(service, ex, config);
tabsPane.addTab("Panel 2", someOtherPanel);
... do more stuff
}
明らかに、これはDIのベストプラクティスに厳密に従っていません。@Inject
数十個のパラメーターを持つコンストラクターを取得するため、タブを使いたくありません。Guiceを使用して、必要な依存関係を必要なタブオブジェクトに注入したいのですが、それらの依存関係をすべてタブコンストラクターに渡す必要はありません。
タブのオブジェクトの依存関係のすべては、私がいることをサービスしているModule
ので、基本的にすべての私は、知っていると思う私がやりたい必要なオブジェクトのためのGuiceを尋ねると、彼らは私のために構築することです。
マルチバインディングを使用して、すべてのタブをとしてバインドできますSet
か?タブに使用する名前を取得できるインターフェイスを実装している場合は、セットからタブを追加するだけでループできます。ただし、タブの順序については、何かを理解する必要があるでしょう。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加