MFC 与 设计模式

来源:互联网 发布:淘宝 旺旺 网页 编辑:程序博客网 时间:2024/04/30 15:36
设计模式是用来为重复出现的问题提供解决方案。它帮助设计者将系统分解成相互合作的对象集并发现其关系。它为我们提供了一种用来交流设计原则的公共词汇。
有两种分类的方法。一种按目的(创造型,结构型,行为型),另一种按作用域(类或对象)。创造型关注对象的创造,结构型关注对象的组成,行为型关注对象的交互和责任的分布。类作用域下的模式关注静态类关系,而对象模式关注动态对象的交互。
MFC是C++程序员使用的一种流行的类库。
(1)结构型:Singleton Pattern
在任一个MFC程序里第一步就是应用程序对象(CWinApp的派生类的对象)的创建,且只能有唯一的一个应用程序对象。CWinApp和其后代就叫做Singleton Classes,而且它还提供了一个公共的存取点(AfxGetApp()),这样的类叫做Singleton 类。
Singleton Pattern ensures that a class only has one instance and provides a global access point it
       (2)结构型:Bridge Pattern
              Bridge Pattern讲的是把抽象接口与其具体实现对应起来以使两者独立。MFC中,从一个永久机构(象文件。。)中存取对象叫Serialization。MFC用Bridge Pattern来实现Serialization。CArchive 和CFile类实现对象的序列化。CArchivel类提供从一个永久机构读写对象的接口而CFile和其子类为不同的永久机构(例如内存,磁盘文件,套接字。。。)提供了实现。
       一个CArchive对象在构造时用一个CFile(或其子类)对象配置,从CFile对象那它获得序列化的必要信息(包括文件名和操作的类型)。用户可以用CArchive对象来完成序列化操作而不需要知道由CFile对象实现的永久存储机构。
       (3)行为型:Observer Pattern
       Oberserver Pattern意为“在对象间定义一个一对多的依赖,当一个对象状态改变时,其依赖者自动地修改和更新”。前者叫Subject,后者叫Observer。
       MFC在文档/视图结构中用了Observer Pattern。一个文档包含数据对象。一个视图是用户用来更新文档的窗口对象。一个文档可以有多个视图。当文档中的数据被任一个视图改变,那个视图就调用UpdateAllViews方法,并对改变提供说明。文档对象就调用OnUpdate方法来通知其他附加在文档上的视图。派生的视图类可以重写OnUpdate方法并通过查询文档中的数据来更新自己。

附:一个不错的小函数(~~)
int febc(int n)
{
int a[3],i;
a[0]=a[1]=a[2]=1;
for(i=3;i<=n;i++)
a[i%3]=a[(i+1)%3]+a[(i+2)%3]; /*实现
Febc(i)=Febc(i-1)+Febc(i-2)*/
printf("/n%d/n",a[n%3]);
}
 


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=352871
 

 
原创粉丝点击