MFC是基于任何设计模式,如果是这样的设计模式?

1 mfc design-patterns

MFC是基于任何设计模式,如果是这样的设计模式??

Abd*_*man 7

MFC和设计模式

众所周知,MFC是C++程序员使用的流行类库之一.MFC背后的成功故事是其MFC开发人员采用的类架构和设计原则,使其成为广受欢迎的重用库之一.

主要重点是展示如何在MFC中使用模式.我们将看到MFC库中三种模式的使用.

创作:单身模式

任何MFC应用程序的第一步是创建应用程序对象(从CWinApp派生的类的对象).在MFC应用程序的实例中应该只有一个应用程序对象.CWinApp旨在确保给定实例中仅存在应用程序对象.CWinApp及其后代称为Singleton Classes.一个类(CWinApp或其后代)在给定时间确保其类型的最多一个对象,并为此对象提供全局访问点(AfxGetApp()方法)是Singleton类.

由于这一原则被反复应用以解决重复出现的对象"创造性"问题,因此这成为一种模式.Singleton Pattern确保一个类只有一个实例并提供一个全局访问点.使用Visual C++创建单例对象的文章讨论了实现单例的不同方法.

结构:桥梁模式

Bridge Pattern就是将抽象(接口)与其实现分离,以便两者可以独立变化.在MFC中,向/从持久性机制(如文件)存储/检索对象的过程称为序列化.MFC使用Bridge Pattern实现序列化.CArchive和CFile类实现对象序列化.CArchive类提供了用于向/从持久性机制写入/读取对象的接口,而CFile及其子类为不同的持久性机制(如内存,磁盘文件,套接字等)提供了实现.

CArchive对象在构造期间配置有类CFile(或派生类)的对象,从中获取序列化所需的信息,包括所请求操作的文件名和类型(读或写).执行序列化操作的客户端可以使用CArchive对象,而不考虑CFile类实现的持久性机制.

文章桥接模式 - 详细介绍了关于桥接模式的接口和实现之间的差距.

行为:观察者模式

观察者模式旨在"定义对象之间的一对多依赖关系,以便当一个对象更改状态时,其所有依赖关系将自动得到通知和更新".受到更改的对象称为Subject,依赖于Subject的状态的对象称为Observer.

MFC使用观察者模式的文档/视图变体.MFC着名的文档/视图架构使用此变体.文档包含数据对象并充当主题.视图是一个窗口对象,用户通过该窗口对象更新文档,并充当观察者.文档可以有多个视图.只要其中一个视图更改了文档中的数据,它就会通过调用UpdateAllViews方法更新文档,并提供有关修改的可选提示.为了通知其他视图的更改,文档对象为附加到其上的每个视图调用OnUpdate方法(除了调用UpdateAllViews的视图).派生视图类可以覆盖OnUpdate方法,并通过查询文档中的数据来更新自身.