MVCモデルとは
-
ソフトウェア開発で画面を作る(Web UI/iOS/Androidなど)時に重要な考え方
-
オブジェクト指向的プログラミングができた当初からある
-
良いソフトウェアコードの考え方
- 高凝集性(High Cohesion):責任範囲が明確
- 疎結合性(Low Coupling):お互いに依存していない
-
画面を作る時に適用して考え以下の状態を目指す
- 画面作るための機能別に役割を分ける(=結合度を下げる)
- 分けた時に各モジュール(class,file)がある1つの目的を持って分割されている
画面表示の機能を分割する
Model
- ロジックを担当する、つまりデータ元
- Javaのclassが役割を担う
- ex:DBからデータの取得や計算など
- データを供給する機能のみ持っていてこれ以外の目的を持っていないことが大事=凝集性高い
View
- 受け取ったデータを画面に表示する責務をもつ
- DBへのアクセスはしない。あくまでもらってきたデータをどう表示するかのみ
- Htmlが役割を担う
Controller
- ユーザからリクエスト受けてModelクラスに処理を依頼する機能(Rest Controllerなど)
- 返答結果に応じてどのViewをユーザに表示するのか決定する
- Javaのclassが役割を担う
- ex:/helloworlsのエンドポイント叩かれた→画面”hello world!”の画面を返す(図①④)
- コントローラの中でDBへのアクセスはせずモデルに頼む
凝集性と結合度のバランスを考慮した設計が重要!
- これ以上Controllerや機能を無理やり分けると結合度が低くなるが、機能としては1つになっていないので凝集度が低くなる
- MVC、デザインパターンなどのテンプレートメソッドの役割でobjectを分けてあげる
- ありもののパターンを覚えることが重要