2011-02-03 7 views
1

私のアプリケーションは、レイアウトがユーザによって定義されるグラフを出力します。カスタムレイアウトクラスは、私が定義したインターフェースを実装する必要があります。 どうすればよいですか?レイアウトクラスを探す特別なフォルダがありますか?ユーザーがクラス名をアプリケーションの引数として渡すようにしますか?プラグインのようなアーキテクチャのためのJavaのヒント

ご協力いただければ幸いです。

+0

どのようなアプリですか? Webアプリケーション、JWS、ネイティブデスクトップアプリケーションとして嫌われているスタンドアロンのスイングアプリ? –

答えて

3

複数の手法を同時に使用すると、通常、ここで最良の結果が得られます。ユーザーによって、アプリケーションを構成する方法が異なります。例:

  • ユーザーがプラグインを配置できるデフォルトのディレクトリ。または、アプリケーションフォルダのいくつかのサブディレクトリ、プラットフォームに依存する「アプリケーションデータ」の場所にあるシステム全体のディレクトリ、ユーザーローカルディレクトリなど、ディレクトリの一覧さえできます。
  • プラグインの検索と選択を制御するいくつかのオプションを持つ設定ファイル。
  • java -Dorg.something.appname.plugindirs=plugindir1;plugindir2のように、プラグインを検索するディレクトリのリストを指定するJavaシステムプロパティ。
  • 特定のプラグインを選択するための特別なコマンドラインオプションまたはJavaシステムプロパティ。絶対パスまたは上記の方法で指定されたディレクトリで検索するための名前のみを提供する可能性があります。

私はあなたのアプリケーションが提供する方法が多いほど良いと思います。もちろん、何らかの種類のデフォルト設定があるはずです。そうしたくない場合は、ユーザーはすべてのことを気にする必要はありません。また、これらのオプションの使用順序は分かりやすいはずです。たとえば、ユーザープラグインがシステムプラグインをオーバーライドするのは理にかなっています。

+0

このように動作するプログラムのいくつかの例を提案してもよろしいですか?多分Emacsとは別に、私はこれらのアプローチの1つを選んで正しいことをしないものを考えるのに苦労しています。 –

+0

@David、あなたがEmacsについて言及しているので、Vimについても言及しておきます。 Mozilla Firefoxには、プラグイン、システム全体のディレクトリ、およびユーザーローカルディレクトリを探す場所が少なくとも2つありますが、代替ユーザープロファイルへのパスを指定するための "-profile"オプションもあります。 Qtツールキットからのqmakeは、さまざまな方法で指定された多くの場所で追加の「機能」を探しますが、それも意味があります。 –

0

ツールキットの年月、AWT、Swingなどで選択されたモデルがAPIの引数としてレイアウトに渡されます。

java -jar yourapp.jar;theirintf.jar yourapp org.example.theirintf 

特別なフォルダや慣習ではあまり魔法を使わないでください。ただ議論としてそれを取る。ユーザーが独自のものを作成しないことを選択した場合は、デフォルト値を設定してください。あなたのアプリはそれ自身のもので使用できるはずです。

関連する問題