友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

深入浅出MFC第2版(PDF格式)-第81章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






             framework 是无能为力的,也就是说对于数据结构的安排,数据的处理,数据的显示, 



             Application Framework 所能提供的,无一不是单单一个空壳而已…在C++ 语言来讲就 



             是个虚拟函数。软件开发人员必须想办法改造(override )这些虚拟函数,才能符合个人 



             所需。基于C++ 语言的特性,我们很容易继承既有之类别并加上自己的特色,这就是物 



             件导向程序设计的主要精神。也因此,C++ 语言中有关于「继承」性质的份量,在MFC 



             程序设计里头占有很重的比例,在学习使用MFC  的同时,你应该对C++  的继承性质和 



             虚拟函数有相当的认识。第2章有我个人对C++ 这两个性质的心得。 



314 


…………………………………………………………Page 377……………………………………………………………

                                                            第5章    總觀Application Framework  



                   CMyWinApp theApp;  // global object 

                    。。。 

这些对象之间的            BOOL CMyWinApp::InitInstance() 

关联性非常强烈             { 

                       CMultiDocTemplate* pDocTemplate; 

,才有资格被称                pDocTemplate = new CMultiDocTemplate (                  应用程序挑选MFC 中的 

为application               IDR_MYTYPE; 

                           RUNTIME_CLASS(CMyDoc);                              类别,依序产生各对象。 

framework。                 RUNTIME_CLASS(CMyMDIChildWnd); 

                           RUNTIME_CLASS(CMyView)); 

                       AddDocTemplate(pDocTemplate); 



                       CMyMDIFrameWnd* pMyMainFrame = new CMyMDIFrameWnd; 

                    。。。 

                    } 



                                                             CObject 



                                                                 CCmdTarget 

                              MDIChildWnd 

                                  object                            CWinThread 



                                                                       CWinApp 



                                                                           CMyWinApp 

                               Application       Document 

              View object                                           CWnd 

                                  object           object 

                                                                       CView 



                                                                           CMyView 



                              MDIFrameWnd                              CFrameWnd 

                                  object 

                                                                           CMDIFrameWnd    CMyMDIFrameWnd 



         Application object 是全域对象,其它对象以'new' 动态产生。                         CMDIChildWnd    CMyMDIChildWnd 



         MFC 是一个零组件超级市场,所贩卖之零组件的                                    CDocument 

         功能以及零组件彼此之间的关系都已定义好;我                                         CMyDoc 

         们选择适当的零组件,兜出一个应用程序。                                        CDocTemplate 



                                                                       CMultiDocTemplate 



               图5…1 MFC 是一个零组件超级市场,所贩卖的零组件功能以及零组件彼此之 

                       间的关系都已定义好;我们选择自己喜欢的零件,兜出一个应用程序。 



   Application Framework  究竟能提供我们多么实用的类别呢?或者我们这么问:哪些工作 



   已经被处理掉了,哪些工作必须由程序员扛下来?比方说一个标准的MFC 程序应该有 



   一个可以读写文件资料的功能,然而应用程序本身有它独特的数据结构,从MFC 得来的 



   零件可能与我的个人需求搭配吗? 



   我以另一个比喻做回答。 



                                                                                                      315 


…………………………………………………………Page 378……………………………………………………………

             第篇    湷觥 FC  程式設計 



            假设你买了一个整厂整线计划,包括仓贮、物料、MIS、生管,各个部门之间的搭配也 



            都建立起来了,包含在整厂整线计划内。这个厂原先是为了生产葡萄酒,现在改变主意 



            要生产白兰地,难道整个厂都不能用了吗?不!只要把进货原料改一改、发酵程序改一 



            改、瓶装程序改一改、整个厂的其它设备以及设备与设备之间的联机配合(这是顶顶重 



            要的)都可以再利用。物料之后到生管,装瓶之后到仓贮,仓贮之后到出货,再加上MIS 



            监控全厂,这些程序都是不必改变的。 



            一个整厂整线计划,每一单元之间的联机沟通,合作关系,都已经建立起来,是一种建 



            构好的运作模式。抽换某个单元的性质或部份性质,并不影响整体操作。「整厂整线」 



            最重要最有价值的是各单元之间的流程与控制。 



            反映到对象导向程序设计里头,Application Framework 就是「整厂整线规划」,Application 



            Framework 提供的类别就是上述工厂中一个一个的单元。最具价值的就是各类别之间的 



            交互运作模式。 



            虽然文件读写(此动作在MFC 称为Serialize)单元必须改写以符合个人所需,但是单 



            元与单元之间的关系依然存在而且极富价值。当使用者在程序中选按【File/Open 】或 



             【File/Save 】,主框窗口自动通知Document 对象(内存资料),引发Serialization 动 



            作;而你为了个人的需求,改写了这个Serialize 虚拟函数。你对MFC  的改写范围与程度, 



            视你的程序有多么特异而定。 



            可是如果酿酒厂想改装为炼钢厂?那可就无能为力了。这种情况不会出现在软件开发 



            上,因为软件的必备功能使它们具有相当的相似性(尤其Windows 又强调接口一致性) 。 



            好比说程序想支持MDI 接口,想支持OLE,这基本上是超越程序之专业应用领域之外的 



            一种大格局,一种大架构,最适合Application Framework 发挥。 



            很明显,Application Framework 是一组超级的类别库。能够被称为Framework 者必须其 



            中的类别性质紧密咬合,互相呼应。因此你也就可以想象,Framework 所提供的类别是 



            一伙的,不是单片包装的。你把这伙东西放入程序里,你也就得乖乖遵循一种特定的 



             (Application Framework 所规定的)程序风格来进进程序设计工作。但是侯捷也告诉我 



316 


…………………………………………………………Page 379……………………………………………………………

                                           第5章    總觀Application Framework  



    们,这是福利不是约束。 



别人怎么说 



    其它人又怎么看Application Framework ?我将胪列数篇文章中的相关定义。若将原文译 



    为中文,我恐怕力有未逮辞不达意,所以列出原文供你参考。 



    1985 年,Apple 公司的MacApp 严格而系统化地定义出做为一个商业化Application 



    Framework 所需要的关键理念: 



    The key  ideas  of  a mercial application  framework  : a generic  app on  steroids that 



    provides a large amount  of  general…purpose  functionality within  a well…planned;  well



    tested; cohesive structure。 



    *cohesive 的意思是强而有力、有凝聚力的。 



    *steroid 是类固醇。自从加拿大100 公尺名将班强生在汉城奥运吃了这药物而夺得金牌并打破世 



    界记录,相信世人对这个名称不会陌生(当然强生的这块金牌和他的世界记录后来是被取消的)。 



    类固醇俗称美国仙丹,是一种以胆固醇结构为基础,衍生而来的荷尔蒙,对于发炎红肿等症状有极 



    速疗效。然而因为它是透过抑制人类免疫系统而得到疗效,如果使用不当,会带来极不良的副作用。 



    运动员用于短时间内增强身体机能的雄性激素就是类固醇的一种,会影响脂肪代谢,服用过量会导 



    至极大的副作用。 



    基本上MacApp  以类固醇来比拟Application Framework  虽是妙喻,但类固醇会对人体产 



    生不好的副作用而Application Framework 不会对软件开发产生副作用…除非你认为不能 



    随心所欲写你的码也算是一种副作用。 



                                                                        317 


…………………………………………………………Page 380……………………………………………………………

                      第篇    湷觥 FC  程式設計 



                                                                           是: 

                     Apple 更一步更明确地定义一个Application Framework  



                      an  extended  collection  of  classes  that  cooperate  to  support  a  plete  application 



返回目录 上一页 下一页 回到顶部 0 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!