私のアプリケーションは、レイアウトがユーザによって定義されるグラフを出力します。カスタムレイアウトクラスは、私が定義したインターフェースを実装する必要があります。 どうすればよいですか?レイアウトクラスを探す特別なフォルダがありますか?ユーザーがクラス名をアプリケーションの引数として渡すようにしますか?プラグインのようなアーキテクチャのためのJavaのヒント
ご協力いただければ幸いです。
私のアプリケーションは、レイアウトがユーザによって定義されるグラフを出力します。カスタムレイアウトクラスは、私が定義したインターフェースを実装する必要があります。 どうすればよいですか?レイアウトクラスを探す特別なフォルダがありますか?ユーザーがクラス名をアプリケーションの引数として渡すようにしますか?プラグインのようなアーキテクチャのためのJavaのヒント
ご協力いただければ幸いです。
複数の手法を同時に使用すると、通常、ここで最良の結果が得られます。ユーザーによって、アプリケーションを構成する方法が異なります。例:
java -Dorg.something.appname.plugindirs=plugindir1;plugindir2
のように、プラグインを検索するディレクトリのリストを指定するJavaシステムプロパティ。私はあなたのアプリケーションが提供する方法が多いほど良いと思います。もちろん、何らかの種類のデフォルト設定があるはずです。そうしたくない場合は、ユーザーはすべてのことを気にする必要はありません。また、これらのオプションの使用順序は分かりやすいはずです。たとえば、ユーザープラグインがシステムプラグインをオーバーライドするのは理にかなっています。
このように動作するプログラムのいくつかの例を提案してもよろしいですか?多分Emacsとは別に、私はこれらのアプローチの1つを選んで正しいことをしないものを考えるのに苦労しています。 –
@David、あなたがEmacsについて言及しているので、Vimについても言及しておきます。 Mozilla Firefoxには、プラグイン、システム全体のディレクトリ、およびユーザーローカルディレクトリを探す場所が少なくとも2つありますが、代替ユーザープロファイルへのパスを指定するための "-profile"オプションもあります。 Qtツールキットからのqmakeは、さまざまな方法で指定された多くの場所で追加の「機能」を探しますが、それも意味があります。 –
ツールキットの年月、AWT、Swingなどで選択されたモデルがAPIの引数としてレイアウトに渡されます。
java -jar yourapp.jar;theirintf.jar yourapp org.example.theirintf
特別なフォルダや慣習ではあまり魔法を使わないでください。ただ議論としてそれを取る。ユーザーが独自のものを作成しないことを選択した場合は、デフォルト値を設定してください。あなたのアプリはそれ自身のもので使用できるはずです。
どのようなアプリですか? Webアプリケーション、JWS、ネイティブデスクトップアプリケーションとして嫌われているスタンドアロンのスイングアプリ? –