モデル・ビュー・コントローラ
モデル・ビュー・コントローラ(MVC)は、モデル、ビュー、コントローラの3つの役割のいずれか1つに、アプリケーションのオブジェクトを割り当てるようにパターンをデザインします。パターンは、オブジェクトがアプリで果たす役割を定義するだけでなく、オブジェクトが相互に通信する方法を定義しています。3種類のオブジェクトの各々は、抽象的な境界によって他から分離され、それらの境界を越えて、他のタイプのオブジェクトと通信します。アプリ内の MVC の特定の型のオブジェクトのコレクションは、時々、レイヤー (層)と呼ばれ、例えば、モデルレイヤーと呼ばれます。
MVC は Cocoa アプリのための優れた設計の中心となります。このパターンを採用することの利点は非常に多いです。これらのアプリの多くのオブジェクトは、より再利用可能である傾向があり、そのインタフェースは、より良く定義される傾向があります。MVC デザインを持つアプリもまた、他のアプリよりも簡単に拡張可能です。さらに、多くの Cocoa 技術やアーキテクチャは MVC に基づいており、カスタムオブジェクトは、MVC の役割のいずれかを演ずることを要求しています。
モデルオブジェクト
モデルオブジェクトは、アプリにとって特定なデータをカプセル化し、データの操作および処理する、論理と計算を定義します。たとえば、モデルオブジェクトは、ゲームやアドレス帳で接触した文字を表すことがあります。モデルオブジェクトは、他のモデルオブジェクトと1対1および1対多の関係を持つことができ、時々アプリのモデルレイヤーは効果的に1つ以上のオブジェクトグラフです。データがアプリにロードされた後、アプリの永続的な状態の一部であるデータの多くは(その永続状態をファイルやデータベースに格納されているかどうか)モデル·オブジェクトに存在する必要があります。モデルオブジェクトは、知識と特定の問題領域に関連する専門知識を表すので、それらは同様の問題領域で再使用できます。理想的には、モデルオブジェクトは、そのデータを表示するビュー·オブジェクトへの明示的な接続を何も持つべきでなく、ユーザーにはそのデータの編集を許可し、ユーザー·インタフェースおよびプレゼンテーションの問題に関係してはいけません。
コミュニケーション:データを作成したり、修正したりするビューレイヤーのユーザーアクションは、コントローラオブジェクトを介して通信され、モデルオブジェクトの作成または更新ができます。モデル·オブジェクトが変更する(例えば、新しいデータがネットワーク接続を介して受信される) 場合には、適切なビュー·オブジェクトを更新するコントローラオブジェクトに通知します。
ビュー・オブジェクト
ビュー·オブジェクトは、ユーザーが見ることができる、アプリ内のオブジェクトです。ビューオブジェクトは、それ自身を描画する方法を知っており、ユーザのアクションに応答できます。ビュー・オブジェクトの主な目的は、アプリのモデルオブジェクトのデータを表示し、そのデータの編集を可能にすることです。それにもかかわらず、ビューオブジェクトは通常、MVC アプリではモデルオブジェクトから切り離されています。
一般的に再利用し、それらを再構成しているので、ビュー・オブジェクトは、アプリ間の一貫性を提供します。UIKit と AppKit 両方のフレームワークは、ビュー・クラスのコレクションを提供し、Interface Builder は、ライブラリー内に何十ものビューオブジェクトを提供しています。
コミュニケーション(通信):ビュー・オブジェクトは、アプリのコントローラ・オブジェクトを介してモデルデータの変化について学び、ユーザーが起こした変化を通信し、たとえば、テキストフィールドに入力したテキストは、アプリのモデルオブジェクトへとコントローラ・オブジェクトを介して行います。
コントローラオブジェクト
コントローラ・オブジェクトは、1つ以上のアプリのビュー·オブジェクトおよびその1つ以上のモデルオブジェクトとの間の媒介として働きます。コントローラ・オブジェクトは、このように、ビュー·オブジェクトが、モデルオブジェクトの変化について学ぶ、それを通しての導管であり、その逆も言えます。コントローラ・オブジェクトはまた、アプリの設定と調整タスクを実行し、他のオブジェクトのライフサイクルを管理します。
コミュニケーション(通信):コントローラオブジェクトはビューオブジェクトで行われたユーザーアクションを解釈し、モデル層に、新規または変更されたデータを通信します。モデルオブジェクトが変更されると、コントローラオブジェクトはビューオブジェクトにそれらが表示できるように、新しいモデルデータを通信します。
前提条件の記事
関連記事
既出の議論
ココア基礎ガイド のモデル - ビュー - コントローラ
次の章
前の章