web-dev-qa-db-ja.com

モデルとビューの間のキー値の観察はMVCに違反しますか?

MVCでは、コントローラーはビューとモデルの仲介役です。したがって、コントローラーは、モデルとビューからの変更を監視または受信し、それに応じてもう一方を更新するコントローラーである必要があります。私はそれがMVCを壊さないことを確かに知っています。

しかし、コントローラーがビューをモデルのオブザーバーとして登録および登録解除した場合はどうなりますか?ビューが認識できるのは、モデルオブジェクトへの参照がない場合のキーパス、変更の種類、および値です。したがって、model.title = @"new title"を割り当てると、ビューは、self.text = @"new title"を割り当てるUILabelサブクラスのように、そのプロパティの変更をアクションにマップできます。これはMVCを壊しますか?

2
Korey Hinton

いいえ、ビューにモデルを監視させる(またはモデルに対して他の読み取りアクションを実行させる)ことは、MVCパターンの有効な実装です。

MVCパターンが通常実装される主な方法は2つあり、モデルからの情報がビューに到達する方法が大きく異なります。

最初の形式では、all情報はコントローラーを通過します。コントローラーは、ビューに必要な情報を提供し、モデルで使用される複雑なデータ構造(クラスなど)を単純な配列に変換する責任があります。ビューが機能する辞書。このフォームは、コーディングの経験が限られているUXエキスパートがビューを作成できるという哲学を持つWebフレームワークでかなり人気があります。

2番目の形式では、コントローラーがビューとモデルを相互に接続する場合がありますが、ビュー自体がモデルから取得する情報を決定します。このフォームでは、ビューはモデルを監視し、コントローラーが更新に関与しなくても変更を通知できます。このフォームは、インタラクティブな(Web以外の)アプリケーションでより多く期待されます。