MFC和设计模式

Template Method(模板方法)
      
      
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
     
     
 
    
    
示例:
     
     
这种模式在MFC源码中被大量使用。
     
     
典型的有: CView基类对WM_PANT消息的相应
     
     
void CView::OnPaint()
    
    
{
    
    
    file://处理流程
    
    
    CPaintDC dc(this);
    
    
    OnPrepareDC(&dc);
    
    
    OnDraw(&dc);
    
    
}
    
    
然后派生类实现OnPrepareDC,OnDraw完成具体的步骤。
     
     
 
    
    
 
    
    
Bridge(桥接)
      
      
意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
     
     
示例:MFC中的 (Serialization) 序列化机制
     
     
在序列化机制中,CArchive 和 CFile共同完成了数据的永久存储
     
     
CArchive定义了数据存取的共用接口
    
    
CFile及其派生类则完成了存储过程的具体实现(文件、内存缓冲区等等)
     
     
这样,数据存储的接口部分与具体实现部分被分离了。给CArchive搭配不同的CFile派生类就可实现不同的物理存储。
     
     
 
    
    
 
    
    
Observer(观察者)
      
      
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。
     
     
示例:MFC 中的文档视图结构
     
     
一个文档对象可以对应多个视图对象,视图对象是对文档对象的诠释。
     
     
当文档对象发生变化后,调用UpdateAllViews 更新视图
     
     
然后各个视图的OnUpdate 被调用。 
     
     
 
    
    
 
    
    
Chain of Responsibility (职责链)
意图:
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

示例:
MFC消息链
在MFC中各 CCmdTarget派生类定义自己对特定消息及命令的响应动作。
消息和命令沿着消息映射定义的链进行传递,直到有对象处理他。

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值