使用 MFC 文档/视图体系结构的主要优点是,该体系结构支持同一文档的多个视图特别好。 (如果不需要多个视图,并且文档/视图的小额开销在应用程序中属于过度开销,则可以避免这种体系结构。文档/视图体系结构的替换选项。)
假设应用程序允许用户在电子表格窗体或图表窗体中查看数值数据。 用户可能希望同时查看原始数据(以电子表格形式)和来自数据的图表。 可以在单独的框架窗口或单个窗口中的拆分窗格中显示这些单独的视图。 现在,假设用户可以编辑电子表格中的数据,并立即查看图表中反映的更改。
在 MFC 中,电子表格视图和图表视图将基于从 CView 派生的不同类。 这两个视图都将与单个文档对象相关联。 文档存储数据(或可能从数据库获取数据)。 这两个视图都访问文档并显示它们从中检索的数据。
当用户更新其中一个视图时,该视图对象将调用 CDocument::UpdateAllViews。 该函数会通知文档的所有视图,并且每个视图都使用文档的最新数据自行更新。 调用一次 UpdateAllViews 即可同步不同视图。
如果不将数据与视图分离,则此方案很难进行编码,尤其是在视图本身存储数据的情况下。 有了文档与视图功能,就变得很简单了。 框架为你执行大部分协调工作。