大規模なソフトウェアプロジェクトのユーザー設定を管理するクラスがあります。永続ストアからユーザー設定を設定または取得する必要があるプロジェクト内のクラスは、このクラスの静的メソッドを呼び出すことです。この集中管理により、プリファレンスをプログラムで完全に消去することができます。各プリファレンスが使用コードの近くで処理され、プロジェクト全体に振りかざされると不可能になります。「マスタープリファレンス」クラスは良いアイデアですか?
私は、この中で集中化設計の別の含意に遭遇しました。ソフトウェアには公開APIがあります。そのAPIは単独でjarファイルで提供することができます。そのAPIのクラスは、事前管理クラスを参照することがあります。したがって、プレファーカーはAPI jarに入っていなければなりません。
各設定にはデフォルト値が設定されている場合があります。ソフトウェアの起動時に、そのデフォルト値が計算されることがあります。このアルゴリズムは、好みに依存し、従って、使用コードの近くに存在する傾向がある。したがって、プレファーカーがデフォルトを思いつく必要がある場合は、問題のクラスを呼び出します。
しかし、今の県マネージャが存在してはならないAPIジャーにクラスのすべての種類に吸って、「タコクラス」になったこと。そうでなければ、API jarを使用するプログラムはすぐにClassDef例外を実行します。そうであれば、他のクラスのそれぞれがまだ他のクラスを参照しているかもしれないので、API jarは今や膨らんでいます。
一般に、他のJavaプログラマは、集中化されたクラスで自分のプリファレンスを管理しますか?
パブリックAPIの一部として静的な事前管理クラスを配布することは理にかなっていますか?
デフォルトを決定するコードの保守担当者は、そのプレファマネージャであるべきですか?
ワウ;素晴らしい答え。私は多分それの10%で小さな屁理屈を持っているが、関連する趣向の分割は良い呼び出しであり、私は考えるべきだった。 –
私はしばしば同じ問題に直面します(幸いなことにEclipseは私に多くの選択肢を与えません)。私はあなたの意見を聞くことに興味があります:) – Uri
共有マネージャーのインスタンスを取得することについて - 私は本当に(Javaが扱う)ディスク書き込みレベルでは、もちろん、抽象度が高いほど私は気になるはずです。 –