2017-05-11 12 views
0

私は、組織内の他の部門によるカスタマイズされた使用を可能にするために、私が拡張しようとしている大きなアプリケーションを持っています。実行時に使用されているパッケージを変更することはできますか?

各部門は異なるニーズを持っていますが、同じクラスのいくつかを共有することができますが、他の部門は部門固有のニーズに合わせて変更する必要があります。

私がしたいことは、各部門の新しいパッケージを作成し、関連するクラスをそれらのパッケージの下に移動して、それらを分離したままにして、すべて同じアプリケーション全体に入れることです。

は今のところ、私のパッケージ構造は、次のようになります。

[src] 
    - Main.java 
    [view] 
     - D1 FXMLs 
    [controllers] 
     - D1 Controllers 
    [model] 
     -D1 Classes 

私が何を期待していますどのような再構築は、追加の部署、D1(部門1)と同じクラス名を使用して多くのを含めるためのプロジェクトです。

[src] 
    - Main.java 
    [D1] 
     [view] 
      - D1 FXMLs 
     [controllers] 
      - D1 Controllers 
     [model] 
      -D1 Classes 
    [D2] 
     [view] 
      - D2 FXMLs 
     [controllers] 
      - D2 Controllers 
     [model] 
      - D2 Classes 
...etc 

私は、実行時に変数の値に基づいて、インクルードが外に動作するパッケージを決定するために、私のMain.javaが必要になります。

これも可能ですか、各部門ごとに完全に別々のプロジェクトを作成し、実行するローダープログラムを決定する必要がありますか?

EDIT:おそらく私は自分自身で答えを見つけただけです。 Main.javaをD1またはD2パッケージ内のクラスにコールし、クラスが正しくパッケージを割り当てることができますか?

+0

工場パターン(特に抽象工場パターン)を読み上げてください。 –

+1

JDKの例は、URLストリーム処理のファクトリです。ここで実装を見つけることができます:[Factory implements URLStreamHandlerFactory](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/sun/misc/Launcher.java#Launcher 。工場)。この例では反射を使用していますが、これは使用したい場合と使用しない場合があります。コンパイル時に名前が分かっていれば、ハードコードされた部門名のリストも機能します。リフレクションは、実行時に動的に実装を選択できるようにすることです。 – jewelsea

答えて

0

最も洗練されたソリューションではないかもしれませんが、単純なアプローチを使用しました(私のスキルはまだ工場を理解しているところではないので)。

私はちょうど質問に私の編集が何を必要としたパッケージによって異なるパッケージのRootLayoutControllerを呼び出すかを実装しました。

関連する問題