Modelについて

今の所でもよくあるんだけど、Model=DBクラスって勘違いが多い。

DBクラスをModelと命名してるFWもあったりするので勘違いを助長する。

確かに一昔前まではその考え方で良かったんだけど、それだとどうしてもControllerが肥大化してしまう。

結果同じようなコピペが増えてしまって大変なことに…

Modelというのはアプリの振る舞いそのものであり、ControllerやViewからの処理リクエストや変換、DBオブジェクトへのクエリ要請をする物。
つまりロジカル層がそれに当たります。
じゃあ何をどうすればModelになるのかというと…
ControllerやViewからの指示を受けて期待する値を返してあげること。

つまりControllerで受け付けるユーザ操作メソッド内部では、処理がいかに複雑でも数行であるということ。
じゃあ今までの処理をすべてロジカル層に移植すれば解決!なんて簡単なわけでも無いわけです。
DB操作をする層、変換をする層、複数機能をまとめる層などそれぞれの層に役割を与えて細かい単位で処理をする必要があります。
そうしないとControllerの肥大部分がModelに移っただけで解決にならないから。
Controllerのコピペをしなくて良くなっただけで、結局似たような処理はコピペになってしまう…

なのでいろんなものを組み合わせて使えるようにしないといけない。
処理を細かい単位で分けてメソッド化しておくだけでも多少の分散はできるようになる。
そしてそれをパターンやクラスによって分けることで更に分散ができるわけ。

こうして分散してつくったものをController側でコールすることで
汎用的かつ流動的なコーディングが可能となる。

つまり、Modelというのはアプリケーションそのものを体現するものであり
それを分散させたものという認識です。

この認識自体は基本的にほとんどののパターンで応用が効くので覚えておくと、幅がかなり広がるのでオススメですよ!

 

 




Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.