- ベストアンサー
複数のクラスから利用する環境設定情報について
- JavaのGUIアプリケーションでの環境設定情報の共有方法を知りたい
- 環境設定情報を保存して次回実行時に読み込むための一般的な設計方法を教えてください
- 複数のクラスで共有する環境設定情報をどのように扱えばよいかアドバイスをください
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
必ずしも一般的に妥当といえるかはわかりませんが、個人的な意見を記してみます。 個人的には1番目のstaticメソッドによる方法が好みです。ただしある程度の規模の複数のアプリケーションで共通の枠組みを考えるときは安直だと思います。 動的に切り替わることを可能にする(イメージしているのはjavaのLOOK&FEELとかです)とか、JVM上で複数のアプリケーション毎にに異なる設定内容を持っているという状況なら2番目の方法が自然と思います。例えば、 XXSystemProfile.getInstance(String applicationName); こんな感じでアプリケーション固有な環境設定情報を取得して部品が振る舞いを決めるといったように。 3番目の方法は環境設定がどう実現されているかを部品が意識せずにインターフェースだけを知っているという点で2番目より柔軟なのかも知れません。ただ環境設定情報ということならアプリケーション固有の情報なので一々上位から渡す煩雑さを避けて1番目か2番目の方法が好ましく感じます。 4番目の方法はメインフォームの外観を決める情報でswing/awtが意識してくれるプロパティであれば一番自然だと思います。ただ他のクラスへ渡すということがメインフォーム以外の外観をメインフォームのプロパティに置くという意味なら「そこにおくべきではない情報を置いている」気がして好みではありません。
その他の回答 (2)
- teketon
- ベストアンサー率65% (141/215)
>あまり設定専用クラスというものを作らないものなのでしょうか。 自分で使用するだけならば、keyの値を自由に決められる単純なPropertiesしか使いません。 他の方が使うならば、Propertiesをラップしたクラスを提供します。Eclipseの補完機能も使えますし。 設定値が複雑になるなら、Builderクラスを提供します。 Javaは、設定項目に対応するBeanを作り、そのBeanに基づき値を保存・設定するクラスをつくることはあります。 ただ、今回仰るレベルはJFrameが提供しているので、ほぼ素のまま使いますね。
お礼
回答ありがとうございます。 現状は単純な仕様なのでそのままのPropertiesでも出来そうですが、今後拡張の可能性を考えてPropertiesをもとにラッパークラスを作ってみることにします。 今後のためにBuilderクラスについても検討してみようと思います。
- teketon
- ベストアンサー率65% (141/215)
SystemのPropertiesに自分の環境設定情報を追加するかな。
お礼
回答ありがとうございます。 Key-Valueで表現されるタイプのデータであればその方法が良さそうですね。 System Properties は読み取りにしか使わない思っていました。 あまり設定専用クラスというものを作らないものなのでしょうか。
お礼
回答ありがとうございます。 メリット・デメリットを踏まえると設定用の独自クラスを作る場合はgetInstanceで共通して使えるシングルトンクラスを設計するのが良さそうに見えます。 小規模なプログラムならstaticで十分なのかもしれませんが。