2009-06-08 5 views
1

私はアプリケーションでModel-View-Controllerパターンを実装しました。 Webアプリケーションではありませんが、MVCが適しています。モデルビューコントローラ

モデルへのすべての更新がコントローラ経由で行われるようになりました。ビューからの更新もコントローラに送信され、モデルにルーティングされます。 (私はアプリケーションモードに応じて意思決定のためのモデルとコントローラの間に状態クラスを持っています)。ほとんどのパターンでは、モデルを直接更新するビューのように見えています。これはこのパターンの文脈で有効ですか?

答えて

2

ビューは、コントローラを介して直接モデルに直接アクセスするべきではないので、私の意見ではそうしています。

3

ビューは、モデルのオブザーバになることができます。
モデルは、オブザーバインタフェースを介してビューにアクセスできます。モデルが変更されると、ビューまたはコントローラに通知できます。ビューとコントローラからモデルを切り離すのはObserverパターンです。

Model-View-Controller

...

1つのコントローラが排他的にモデル を操作したときにパッシブモデルが採用されています。コントローラーは モデルを変更し、 ビューにモデルが変更されたことを通知し、 をリフレッシュする必要があります(図2を参照)。このシナリオのモデル は完全に で、ビューとは無関係で、 コントローラです。つまり、 というモデルには、状態が変更されたことが報告されていません。つまり、 です。
... モデルは コントローラの関与なしに状態が変化したときに

がアクティブモデルが使用されています。他のソースが変更されたときに が発生する可能性があります。 のデータとその変更は、ビューに反映されている である必要があります。 株価表示があるとします。株価データが変更されると、外部ソースから 株データが受信され、 は ティッカーバンドとアラートウィンドウのようにビューを更新します。 モデルでは、 の内部状態の変化が検出されたときに検出されるため、 モデルは、表示をリフレッシュするようにビューに通知する必要があります。
...

+0

ありがとうございました。 私の場合、モデルは完全にアクティブでもパッシブでもありません。コントローラがモデルを更新するとき(意思決定を行っている状態クラスを介して)、モデルが更新され、モデルによって視聴者に通知されます。また、モデルは、構成XMLファイルからデフォルトのパラメータを読み取ることにより、起動時に更新されます。その場合にも視聴者には知られていない。これを除いて、すべての私の更新はコントローラを通して制御されます。 – sarat

関連する問題