Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

MVCとか3層アーキテクチャとか勉強しなおし

スポンサードリンク


ほとんど独り言のような記事です。
なんとなく理解して、なんとなく覚えるMVCとか3層アーキテクチャ
この2つ全く別物なんですが、ごっちゃにして覚えてる人多いですよね。
日本人だけかと思ったら、海外の人もそうみたい……。
正確ではないけどstackoverflowに書いてあった回答でわかりやすい回答がありました。
そもそもMVCと3層アーキテクチャはカテゴリーからして違うそうですよ。

MVCと3層アーキテクチャの違い

ハイパーざっくりかくと違いはこうです。いや、
MVCが明らかに違うじゃないか!!!って意見はあると思います。

3層アーキテクチャ
Client <-> Middle <-> Data
MVC
     Middle
     ^    |
     |    v
Client <- Data

これですね。3層アーキテクチャはわりと一言で表せて、
Middleの層を必ず介してClientとDataがやり取りされる。
正確に言うと、
プレゼンテーション層、ビジネスロジック層、データ層
で必ずビジネスロジック層を通じてデータをやり取りする
ということですね。

問題は、MVCのほう。これ一言で説明できる人いますか(;'∀')
なかなか一言で難しいうえに、私はまだ完全に理解してません。
そこでいろいろWebの情報漁って、Javaを例に書いてみました。
StrutsとかSpringの場合はこんな感じなのでしょう。
若干あってるか自信ありません。

ざっくりいうと上のテキストで書いた図のように
3層アーキテクチャとの違いはModelとViewが関連しているところですね。
なんかこの辺をじっくり解説してくれてる書籍とかあるんだろうか?
使うフレームワークによってもちょっと違う仕組みの
MVC?になっているものもあったり……。
Document-Viewとかはわかりやすいんですが……。
今時それはないか……。
さらにMVVMとかもあったりカオスです。
読んでも違いが何なのかーってあたりが激しく混乱します……。
MVVMはWPFとか触れば理解できるようになるかもしれませんが……。

Skinny Controller, Fat Model

こんな言葉を聞いたことがあります。
僕が見てきたのはFat Controller, Skinny Model
というパターンが多かったです。
なんでもControllerでやりすぎ……。
ってのがありました。
それをデータの一貫性はModelになるべくさせて
Fat Modelにすべきみたいなのをどこかで読んだ気がします。
いい指針なのかなーと思いつつ、いろいろ調べると、
んーどうもどっちかに偏るのよくないみたいですね。
Fatなクラスは作るな的なことらしいです。
んー難しいですね。

でっていう……記事になってしまいました。