私は、組織内の他の部門によるカスタマイズされた使用を可能にするために、私が拡張しようとしている大きなアプリケーションを持っています。実行時に使用されているパッケージを変更することはできますか?
各部門は異なるニーズを持っていますが、同じクラスのいくつかを共有することができますが、他の部門は部門固有のニーズに合わせて変更する必要があります。
私がしたいことは、各部門の新しいパッケージを作成し、関連するクラスをそれらのパッケージの下に移動して、それらを分離したままにして、すべて同じアプリケーション全体に入れることです。
は今のところ、私のパッケージ構造は、次のようになります。
[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パッケージ内のクラスにコールし、にクラスが正しくパッケージを割り当てることができますか?
工場パターン(特に抽象工場パターン)を読み上げてください。 –
JDKの例は、URLストリーム処理のファクトリです。ここで実装を見つけることができます:[Factory implements URLStreamHandlerFactory](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/sun/misc/Launcher.java#Launcher 。工場)。この例では反射を使用していますが、これは使用したい場合と使用しない場合があります。コンパイル時に名前が分かっていれば、ハードコードされた部門名のリストも機能します。リフレクションは、実行時に動的に実装を選択できるようにすることです。 – jewelsea