アプリケーションでの役割に基づいてコードを分離するアプローチです。アプリケーションフローでは、まずコントローラが呼び出されます。コントローラは、モデルを使用してデータを取得するメソッドを実行します。それから、コントローラはどのビューを呼び出すか決定します。ビューには訪問者が閲覧する出力が含まれています。基づいて、決定します。ここからアプリケーションが動き出します。どのデータが処理されるか、どのビューをユーザに見せるか、を決めます。コントローラは、自身では何も行いません。モデルとクラスを呼び出します。詳細についてはコントローラを参照ください。モデルデータを取得/処理/削除する必要がある時は必ず、モデルで行うべきです。モデルは、ある種のデータの表現であり、データを変更するメソッドがあります。クエリを置くべきではありません。クエリはモデルに置き、コントローラはクエリを実行するときにモデルを呼び出します。データベースを扱うモデルのみ変更すればよいです。詳細についてはモデルを参照ください。含まれるべきではありません。レイアウトを変更するときに、ビューを変更しさえすれば良く、コントローラを気にする必要はなくなります。使う程度にすべきです。詳細についてはビューを参照ください。コントローラに含めるかどうか判断が難しくなるでしょう。この場合、ビューモデルが役立ちます。ビューモデルはコントローラとビューの仲立ちをします。詳細についてはビューモデルを参照ください。