ドキュメント/ビュー アーキテクチャの利点
MFC ドキュメント/ビュー アーキテクチャの主な利点は、同一ドキュメントの多数のビューがサポートされていることです。 アプリケーションにマルチ ビューが不要で、ドキュメント/ビューの小さなオーバーヘッドでも負担になる場合は、このアーキテクチャを使用しないこともできます。 詳細については、「ドキュメント/ビュー アーキテクチャの代替手段」を参照してください。
たとえば、アプリケーションで数値データを表示する場合、スプレッドシート形式またはグラフ形式で表示できるようにすると仮定します。 このとき、スプレッドシート形式の生データと、データから生成されるグラフの両方を同時に表示するようにもできます。 それぞれのビューは、個別のフレーム ウィンドウや、単一のウィンドウを分割したペインに表示できます。 また、ユーザーがスプレッドシートでデータを編集すると、変更がグラフにすぐに反映されて確認できると仮定します。
MFC では、スプレッドシート ビューとグラフ ビューは、CView から派生した異なるクラスに基づいています。 両方のビューが同じドキュメント オブジェクトに関連付けられます。 ドキュメントは、データの格納や、データベースからのデータの取得を行います。 どちらのビューも、ドキュメントにアクセスして、ドキュメントから取り出したデータを表示します。
ユーザーがビューの 1 つを更新すると、そのビュー オブジェクトは CDocument::UpdateAllViews を呼び出します。 この関数によってドキュメントのすべてのビューに更新が通知され、各ビュー自身がドキュメントの最新データを使用してビューを更新します。 UpdateAllViews を 1 回呼び出すだけで、複数のビューの同期がとられます。
このシナリオは、ビューとデータを分離しないと実現が困難です。特に、ビュー自身によってデータが格納される場合は難しくなります。 しかし、ドキュメント/ビューを利用すると簡単に実現できます。 フレームワークが、ドキュメントとビューの連係の大部分を自動的に行います。