【JavaEE】modelの考え方|画面とロジックの分離で保守性アップ
とてぃです。本日は「modelの考え方」について、現場でのデータパターンや設計方針の違いを踏まえて整理します。
これまで私は「model=業務間でのデータの受け渡し」と考え、基本的にJava側(Model層)でできることは全て処理してから値を格納するようにしていました。
画面(xhtml)側での処理分岐の考え方
前回の記事では、xhtmlで画面に出したいデータだけをシンプルに出力していましたが、「画面側で判断できるものはxhtmlで記載した方が良い」という新たな気づきがありました。
理由は、処理をJava側(Model層)にひとまとめにしてしまうと、後々の仕様変更時に影響範囲が大きくなりやすいからです。
なぜxhtml側で分岐・表示制御をするのが良いのか?
- 画面表示の条件分岐やラベルの出し分けなどはxhtmlで完結できる
- 不要になった処理や仕様変更時、xhtmlの修正だけで済み、Model層への影響が少ない
- ロジックと表示の責任範囲が明確になり、保守性・可読性が向上
- 業務仕様の変更に柔軟に対応しやすい
もちろん、業務ロジックやデータ加工はModel層で、表示制御や細かなUI分岐はxhtmlで、という役割分担が基本です。
実践例:xhtmlでの分岐記述
<!-- 例:フラグに応じて表示内容を切り替える -->
<h:outputText value="有効" rendered="#{bean.activeFlag}" />
<h:outputText value="無効" rendered="#{!bean.activeFlag}" />
<!-- 例:条件によってボタンの表示/非表示を切り替える -->
<h:commandButton value="編集" action="#{bean.edit}" rendered="#{bean.editable}" />
このように、rendered
属性やEL式を使えば、画面側で柔軟に分岐できます。
Model層とView層(xhtml)の責任分担
- Model層(Java):業務ロジック、データ加工、バリデーション、DBアクセスなど
- View層(xhtml):画面表示、UI制御、ラベルやボタンの分岐、表示フォーマット
この分担を意識することで、後からの仕様変更や画面デザインの修正もスムーズになります。
まとめ
- 業務ロジックやデータ加工はModel層で、画面表示の分岐やUI制御はxhtmlで
- 処理の責任範囲を分けることで、保守性・拡張性が向上
- 業務仕様やプロジェクトのルールに合わせて最適な分担を検討しよう
画面表示で分岐できるものはxhtmlで記載した方が良い場合も多いです。
業務仕様やチームの方針にもよりますが、ぜひ一度見直してみてはいかがでしょうか。
最後まで読んでいただき、ありがとうございました。
ディスカッション
コメント一覧
まだ、コメントがありません