- PR -

美しい設計方法について

投稿者投稿内容
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2008-07-28 20:06
GetMapは概ねそんな感じです。

それだけなら java.util.Map等を java.util.Collections#unmodifiableMap()するので済みます。

折角美しい設計を目指してビジネスロジックに合わせた専用のクラスを作るのですからつぎの点も考慮したほうが良いと思います。(美しいというのは主観が入るので、別の意見もあると思いますが…)
1.クラス名 → 扱う Value Objectが連想できる名前 例)OrderForm
2.get()の型 → Objectではなく、扱う Value Objectの型 例)Quantity
3.getの引数 → Stringでもいいが、より限定的な型 例)ProductID
4.Aggrigate, Value Objectは適切な名前のパッケージに配属 例)mycompany.ordering

それから、publicでない setterなら有っても良いと思います。
(コンストラクタで設定するに越したことはありませんが。)

インターフェースではなく、コンポーネント内部の実装なら、1は前述の unmodifiable...、2, 3は Genericsを使っても良いと思います。

あと、Value Objectは等価性の判定が重要ですから、equalsおよび hashCodeの設計もお忘れなく。

スキルアップ/キャリアアップ(JOB@IT)