- ベストアンサー
MVCの分け方について
- MVCアーキテクチャを勉強しています。MVCのメリットは作業分担、コードの可読性の他に、使いまわしのしやすさがあるようです。
- MVCで製作されたWEBページは1対多の分け方が理想的です。例えば、とあるモデルはさまざまなコントローラに使われ、モデルを1箇所修正すれば全コントローラに反映されます。また、とあるコントローラは複数のパターンのVに対応していて、スマホ用デザイン、PC用デザイン、様々なデザインに振り分けることができます。
- MVCの分け方は、モデルとコントローラの関係の構造を明確にし、可読性と使いまわしのしやすさを考慮する必要があります。適切な分け方をすることで、効率的な開発が可能になります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
phpの場合、Mは多くの場合DBとほぼイコールになると思います。VCから見ればデータそのものを取り出すためのデータアクセスオブジェクトやデータ管理オブジェクトに当たります。例えばProductDataManager.phpやUserDAO.phpという感じでDBに関するコードはココ以外には一切書かないという方針で作ります。 一方で、Vはhtml+css+jsとほぼイコールですが、設計思想の違いで色々あります。(1つのhtml+複数のCSS)と考える事もできますし、htmlは1つでJavascriptの振り分けした単なる結果かもしれません。単純に膨大な数のhtmlかもしれませんし、一部を書き込める複数のテンプレートかもしれません。なので画面の実装方法は様々ありますね。 Cは単なるgatewayとして考えて単一と考えた設計の場合は、CはあらゆるVを切り替える仕事をしなければならないと考える事ができます。ページとしてのVも振り分け、さらにプラットフォーム毎のVも振り分けます。ただし、この場合はCにはページを表すパラメータを渡す必要があります。 M-C-(サイト全体のあらゆるV) 一方で、CはVと一対一とさせる設計方法もあります。この例ではページ毎にCを選択的に呼び出す方法です。C1.phpを呼んだ場合は、V1が表示されV2は表示されないのでC1の実装はコンパクトになります。 M-C1-(ログイン用のV1) | C2 | (検索結果のV2) いずれの例でもM上に定義したメソッドのシグネチャーが一切変わらなければ、メソッドの実装をどう変えようが、Mは分離して保守できるメリットがあります。つまりメソッドの中でDBの代わりにメモリー上の値を参照しようと、textファイルであっても、CやVはその変更を一切意識しなくてすむわけです。
お礼
回答有り難うございます。 参考にして設計させて頂きます。