3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Java】MVCモデル基本

Posted at

MVCモデルとは

  • ソフトウェア開発で画面を作る(Web UI/iOS/Androidなど)時に重要な考え方

  • オブジェクト指向的プログラミングができた当初からある

  • 良いソフトウェアコードの考え方

    • 高凝集性(High Cohesion):責任範囲が明確
    • 疎結合性(Low Coupling):お互いに依存していない
  • 画面を作る時に適用して考え以下の状態を目指す

    • 画面作るための機能別に役割を分ける(=結合度を下げる)
    • 分けた時に各モジュール(class,file)がある1つの目的を持って分割されている

画面表示の機能を分割する

  • 3つの役割に分けて考え、役割が被らないよう綺麗にする
    • Model
    • View
    • Controller
      spring2.png

Model

  • ロジックを担当する、つまりデータ元
  • Javaのclassが役割を担う
  • ex:DBからデータの取得や計算など
  • データを供給する機能のみ持っていてこれ以外の目的を持っていないことが大事=凝集性高い

View

  • 受け取ったデータを画面に表示する責務をもつ
  • DBへのアクセスはしない。あくまでもらってきたデータをどう表示するかのみ
  • Htmlが役割を担う

Controller

  • ユーザからリクエスト受けてModelクラスに処理を依頼する機能(Rest Controllerなど)
  • 返答結果に応じてどのViewをユーザに表示するのか決定する
  • Javaのclassが役割を担う
  • ex:/helloworlsのエンドポイント叩かれた→画面”hello world!”の画面を返す(図①④)
  • コントローラの中でDBへのアクセスはせずモデルに頼む

凝集性と結合度のバランスを考慮した設計が重要!

  • これ以上Controllerや機能を無理やり分けると結合度が低くなるが、機能としては1つになっていないので凝集度が低くなる
  • MVC、デザインパターンなどのテンプレートメソッドの役割でobjectを分けてあげる
  • ありもののパターンを覚えることが重要
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?