青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

MFC與設計模式

This main topic of this article is to show how patterns are used in MFC. We will be seeing the usage of three patterns in MFC library.

Creational : Singleton Pattern

First step in any MFC application is the creation of application object (object of class derived from CWinApp). There should be only one application object in an instance of MFC application. CWinApp is designed to make sure that only application object is present in a given instance. CWinApp and its descendants are called Singleton Classes. A class (CWinApp or its descendant) that assures a maximum of ONE object of its type at a given time and provides a global access point (AfxGetApp() method) to this object is a Singleton class.

As this principle is applied over and over again to solve recurring object "creational" problems, this becomes a pattern. Singleton Pattern ensures that a class only has one instance and provides a global access point it. The article Creating Singleton Objects using Visual C++ talks about different approaches for implementing Singletons.

Structural : Bridge Pattern

Bridge Pattern is all about decoupling an abstraction (interface) from its implementation so that the two can vary independently. In MFC, the process of storing/retrieving an object to/from a persistence mechanism (like a file) is called Serialization. MFC uses the Bridge Pattern to implement Serialization. CArchive and CFile classes implement object Serialization. CArchive class provides the interface for writing/reading an object to/from a persistence mechanism whereas the CFile and its sub classes provides implementation for different persistence mechanisms such as memory, disk file, sockets etc.

A CArchive object is configured with an object of class CFile (or a derived class) during its construction, from which it obtains the necessary information for serialization, including the filename and type of the requested operation (a read or write). Client performing the Serialization operation can use CArchive object without regarding the persistence mechanism implemented by CFile classes.

The article Bridge Pattern - Bridging the gap between Interface and Implementation talks about Bridge pattern in detail.

Behavioral : Observer Pattern

The Observer Pattern is intended to "Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically". An object that is subjected to change is called a Subject and an object that depends on the Subject's state is called an Observer.

MFC uses a Document/View variant of the Observer Pattern. MFC's famous Document/View architecture uses this variant. A document contains the data object and acts as a Subject. A view is a window object through which the user updates the document and it acts as an Observer. A document can have multiple views. Whenever the data in the document is changed by one of the views, it updates the document by calling UpdateAllViews method, with optional hint about the modification. To inform about the change to other views, the document object calls OnUpdate method for each view attached to it (except the view that called UpdateAllViews). Derived view classes can override the OnUpdate method and update themselves by querying the data from the document.

The article Applying Observer Pattern in C++ Applications talks about Observer pattern in detail.

Summary

Design Pattern provides a common language for designers and helps them to decompose systems into a set of cooperating classes and objects. They provide proven design solution to recurring problems. In this article, I have introduced the design pattern and how MFC is using some of the patterns in its design. We can easily find more and more patterns when we dig into MFC and its classes.

posted on 2006-05-25 13:39 夢在天涯 閱讀(3794) 評論(0)  編輯 收藏 引用 所屬分類: CPlusPlusMFC/QTDesign pattern

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1811982
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久久久久久综合| 亚洲视频综合| 亚洲精品一区在线观看| 一区二区三区日韩欧美| 久久经典综合| 亚洲黄色免费| 国产综合色精品一区二区三区| 99人久久精品视频最新地址| 午夜精品国产| 欧美精品亚洲精品| 日韩写真在线| 亚洲精品免费一区二区三区| 美女网站在线免费欧美精品| 免费观看日韩av| 国产视频在线观看一区| 亚洲国产精品va在线看黑人| 欧美高清视频www夜色资源网| 亚洲成色精品| 美国三级日本三级久久99| 一区二区三区日韩精品| 另类图片综合电影| 一本久道久久久| 亚洲国产精品va| 在线视频精品一区| 激情自拍一区| 久久久久久久久久久久久女国产乱| 日韩亚洲欧美高清| 免费亚洲电影| 久久久亚洲精品一区二区三区| 欧美日韩国产精品专区| 亚洲精品日产精品乱码不卡| 亚洲精品影院在线观看| 欧美综合第一页| 亚洲性视频网址| 欧美一区二区三区日韩视频| 国产亚洲欧美日韩美女| 99精品视频免费观看| 国外视频精品毛片| 国产精品99免费看 | 国产日韩综合一区二区性色av| 99热免费精品| 欧美国产日韩亚洲一区| 欧美在线网站| 欧美1区视频| 欧美在线播放一区二区| 亚洲欧洲在线视频| 久久久国产精品一区| 亚洲福利视频专区| 久久精品99久久香蕉国产色戒| 国产精品大片wwwwww| 91久久久久久国产精品| 裸体一区二区| 久久av二区| 国产偷国产偷亚洲高清97cao| 午夜精品久久久久久久99樱桃 | 亚洲免费av观看| 免费看的黄色欧美网站| 久久se精品一区精品二区| 国产欧美三级| 久久精品在这里| 欧美在线免费观看视频| 国产精品网站在线| 新狼窝色av性久久久久久| 亚洲午夜av电影| 国产农村妇女精品一二区| 午夜精品影院| 欧美一区二区三区在线视频| 国产一区二区毛片| 免费成人黄色片| 欧美顶级少妇做爰| 亚洲午夜精品视频| 亚洲一区在线免费观看| 国产午夜精品美女毛片视频| 麻豆9191精品国产| 欧美日韩第一区| 欧美一区=区| 欧美在线日韩精品| 99视频一区二区| 午夜视频精品| 小黄鸭精品aⅴ导航网站入口| 狠狠干狠狠久久| 亚洲承认在线| 欧美激情国产高清| 亚洲伊人色欲综合网| 亚洲欧美日韩专区| 亚洲国产欧美不卡在线观看| 亚洲欧洲在线视频| 国产精品亚洲综合色区韩国| 欧美成人精品| 欧美日韩高清在线一区| 久久精品国产77777蜜臀| 免播放器亚洲一区| 亚洲女女做受ⅹxx高潮| 鲁大师影院一区二区三区| 亚洲视频专区在线| 久久久久久网址| 亚洲午夜视频在线观看| 久久精品亚洲| 午夜视频久久久久久| 欧美91大片| 麻豆国产va免费精品高清在线| 欧美日韩精品一区视频 | 亚洲国产日日夜夜| 亚洲自拍电影| 日韩一区二区精品葵司在线| 欧美一区二区三区四区高清| 亚洲图片欧美一区| 久久综合久久美利坚合众国| 午夜精品久久久久久久久| 男人的天堂亚洲| 久久久精品久久久久| 欧美日韩高清区| 亚洲国产精品一区二区尤物区| 国产一区二区三区在线观看免费视频| 亚洲精品资源| 亚洲高清资源| 久久香蕉国产线看观看av| 欧美中在线观看| 国产日产欧产精品推荐色 | 一本色道久久加勒比88综合| 亚洲国产一区二区三区a毛片| 日韩亚洲欧美在线观看| 好吊视频一区二区三区四区| 亚洲欧美制服中文字幕| 在线视频免费在线观看一区二区| 久久躁狠狠躁夜夜爽| 久久国产精品一区二区| 国产精品久久福利| 亚洲精品中文字| 日韩亚洲欧美在线观看| 久久一区二区三区四区| 久久综合国产精品台湾中文娱乐网 | 麻豆久久婷婷| 亚洲福利专区| 欧美69视频| 亚洲国产精品久久91精品| 亚洲精品日韩在线观看| 午夜精品在线| 中文一区二区| 亚洲狼人综合| 欧美不卡三区| 亚洲免费观看| 亚洲午夜精品久久久久久浪潮| 欧美日本一区二区视频在线观看| 亚洲欧洲精品一区| 中文国产亚洲喷潮| 国产精品久久久久三级| 欧美中文字幕视频| 蜜桃av噜噜一区二区三区| 亚洲电影成人| 欧美精品日韩www.p站| 在线中文字幕一区| 久久久久国色av免费观看性色| 一区二区在线观看视频在线观看| 久久在线免费视频| 亚洲精品久久久久久久久久久久久| 日韩亚洲成人av在线| 国产精品jvid在线观看蜜臀| 西瓜成人精品人成网站| 欧美韩国日本综合| 亚洲欧美国产日韩天堂区| 国产精品一区二区在线观看不卡| 久久国产精品免费一区| 亚洲韩国精品一区| 午夜精品久久久久久久| 激情久久五月天| 欧美日韩国产高清| 久久爱www| 99精品国产一区二区青青牛奶 | 亚洲最黄网站| 国产伦精品一区二区三区高清| 久久久久国产精品一区| 亚洲精品影视在线观看| 另类尿喷潮videofree| 亚洲一区二区在线免费观看| 伊人久久大香线蕉综合热线| 欧美日韩一区二区免费在线观看| 久久精品国产免费观看| 一区二区欧美日韩视频| 欧美二区在线| 久久精品天堂| 亚洲性人人天天夜夜摸| 亚洲第一毛片| 国产色产综合色产在线视频| 欧美伦理在线观看| 免费高清在线一区| 欧美在线看片a免费观看| 999亚洲国产精| 亚洲福利一区| 欧美成人在线免费观看| 久久久成人精品| 欧美一二三区精品| 亚洲一级黄色片| 日韩午夜激情av| 亚洲激情成人网| 在线不卡视频| 在线观看不卡av| 精品动漫3d一区二区三区免费| 国产精品视频免费观看| 欧美视频手机在线|