完全に理解したと思ってたMVC,MVP,MVVM全然理解してなかった件
![おすし](https://res.cloudinary.com/zenn/image/fetch/s--QzLla27i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/aa09c2f5c0.jpeg)
読んだ記事
![おすし](https://res.cloudinary.com/zenn/image/fetch/s--QzLla27i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/aa09c2f5c0.jpeg)
それぞれの違いとメリデメとなんでCがPになったりVMになったりしてるのかとそれぞれの役割を理解したみだったのでまずはMVCとMVPの違いとかメリットについて↓
MVCとMVPはModelとControllerの間にPresenterが入ってて、それはControllerがfatにならないようにというのはわかった
これはユーザの入力をコントローラが受け取り、入力値によってモデルとされているビジネスロジックを実行させます。
結果としてモデルに変化が起き、その変化をビューが受け取ります。ビューはオブザーバーとしてモデルの変化を監視しています。
なお、いわゆる MVC フレームワークはこれとは異なります。
MVC フレームワークではコントローラがビューを描画します。
このため、原初の MVC を古典的 MVC、MVC フレームワークのような形を MVC2 と呼ぶことがあるようです。
![おすし](https://res.cloudinary.com/zenn/image/fetch/s--QzLla27i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/aa09c2f5c0.jpeg)
Modelはビジネスロジックかくところ、Viewはユーザーのアクションを検知して他の役割に伝えるところ、MVCのCではViewから検知されたらAPI叩いて、ModelからデータをいただいてViewにお知らせする。MVPでのPはCの仕事を丸っと引き受けてるPresenterとViewの間にControllerが挟まってる感じ。ふむ。(完全に自分ようメモ...)
![おすし](https://res.cloudinary.com/zenn/image/fetch/s--QzLla27i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/aa09c2f5c0.jpeg)
この記事によると3層アーキテクチャとMVCは別物らしい
3層アーキテクチャ
ビジネスロジック層・・・ルール書く
データアクセス層・・・じゃんけんの結果を保存する(DBらへんのこと?)
ユーザーとのやりとり・・・プレゼンテーション
MVPにもMVCにも当てはまらなくて困惑...してたけど
実は、MVC、MVP、MVVM といったものは、全てプレゼンテーション層> のアーキテクチャなのです。
ということらしい。なぁるほど。Mはビジネスロジック層だけど。
![おすし](https://res.cloudinary.com/zenn/image/fetch/s--QzLla27i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/aa09c2f5c0.jpeg)
MVVM
MVPとかだとだとAPI叩いた結果をModelから持ってくるけど、データが変わると、C(Controller)やP(Presenter)の位置にあるView Modelの値が変化し、自動的にViewの値も変化する
データバインディングを行うMVVMは、Viewの変更があっても、Modelで変更があっても、お互いに更新を反映する機能を持っている。
MVVMを採用できるJavaScriptのフレームワークで代表的なものはAngularやVue.js。