友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

深入浅出MFC第2版(PDF格式)-第60部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!




                      generic application。 



                      An  application  framework  is  meant to be  used in  its  entirety;  and  fosters  both  design 



                      reuse and code reuse。 An  application  framework  embodies  a particular philosophy  for 



                      structuring  an  application;  and  in return  for a large mass of  prebuilt  functionality; the 



                      programmer gives up control over many architectural…design decisions。 



                    Donald G。 Firesmith 在一篇名为〃Frameworks : The Golden path of the object Nirvana〃 的 



                     文章中对Application Framework 有如下定义: 



                      What  are  frameworks    They  are  significant  collections  of  collaborating  classes  that 

                                             ? 



                      capture both  the  small…scale patterns  and  maj or  mechanisms  that; in  turn;  implement 



                      the mon requirements and design in a specific application domain。 



                      * Nirvana 是涅盘、最高境界的意思。 



318 


…………………………………………………………Page 381……………………………………………………………

                                                 第5章    總觀Application Framework  



Bjarne Stroustrup (C++ 原创者)在他的The C++ Programming Language 一书中对于 



Application Framework 也有如下叙述: 



 Libraries build out of the kinds of classes described above support design and re…use of 



 code  by  supplying  building  blocks  and  ways  of  bining  them;  the  application 



 builder designs a framework into which these mon building blocks are fitted。 An 



 alternative; and sometimes more ambitious; approach to the support of design and re



 use is to provide code that establishes a mon framework into which the application 



 builder  fits  application…specific  code  as  building  blocks。  Such  an  approach  is  often 



 called an application framework。 The classes establishing such a framework often have 



 such fat interfaces that they are hardly types in the traditional sense。 They approximate 



 the  ideal  of  being  plete  applications;  except  that  they  don't  do  anything。  The 



 specific actions are supplied by the application programmer。 



Kaare Christian 在1994/02/08 的PC Magazine  中有一篇〃C++ Application Frameworks〃 



文章,其中有下列叙述(节录): 



两年前我在纽约北边的乡村盖了一栋post…and…beam 房子。在我到达之前我的木匠已经 



把每一根梁的外形设计好并制作好,把一根根的粗糙木材变成一块块锯得漂漂亮亮的零 



件,一切准备就线程只待安装。 (注:所谓post…and…beam 应是指那种梁柱都已规格化, 



可以邮购回来自己动手盖的DIY ! V Do It Yourself …房子)。 



使用Application Framework 建造一个 Windows 应用程序也有类似的过程。你使用一 



组早已做好的零件,它使你行进快速。由于这些零件坚强耐用而且稳固,后面的工作就 



简单多了。但最重要的是,不论你使用规格化的梁柱框架来盖一栋房子,或是使用 



Application Framework             Windows 程序,工作类型已然改变,出现了一种完 

                        来建立一个 



全崭新的做事方法。在我的post…and…beam 房子中,工作类型的改变并不总是带来帮 



助;贸易商在预制梁柱的技巧上可能会遭遇适应上的困扰。同样的事情最初也发生在 



Windows 身上,因为你原已具备的某些以C 语言写Windows 程序的能力,现在在以 



                                                                                   319 


…………………………………………………………Page 382……………………………………………………………

              第篇    湷觥 FC  程式設計 



              C++ 和Application Framework 开发程序的过程中无用武之地。时间过去之后, 



              Windows 程序设计的类型移转终于带来了伟大的利益与方便。Application Framework 



              本身把message loops 和其它Windows 的苦役都做掉了,它促进一个比较秩序井然 



              的程序结构。 



              Application Framework …建立Windows 应用软件所用的 C++ 类别库…如今已行之 



              有年,因为对象导向程序设计已经快速地获得了接受度。Windows API 是程序性的, 



              Application Framework 则让你写对象导向式的Windows  

                                                     程序。它们提供预先写好的机 



              能(以C++ 类别型式呈现出来),可以加速应用软件的开发。 



              Application Framework 提供数种优点。或许最重要的;是它们在对象导向程序设计模式 



              下对Windows 程序设计过程的影响。你可以使用Framework 来减轻例行但繁复的琐 



              事; 目前的Application Framework 可以在图形、对话框、打印、求助、OCX 控制组件、 



              剪贴簿、OLE 等各方面帮助我们,它也可以产生漂亮的UI 接口如工具栏和状态列。 



              借着Application Framework 的帮助写出来的码往往比较容易组织化;因为Framework 



              改变了Windows 管理消息的方法。也许有一天Framework 还可以帮你维护单一一套 



              码以应付不同的执行平台。 



              你必须对Application Framework有很好的知识   ;才能够修改由它附带的软件开发工具 



              制作出来的骨干程序。它们并不像Visual Basic 那么容易使用。但是对Application 



              Framework 专家而言,这些程序代码产生器可以省下大量时间。 



              使用Application Framework 的主要缺点是;没有单一一套产品广被所有的C++ 编译 



              器支持。所以当你选定一套Framework,在某个范围来说,你也等于是选择了一个编译 



              器。 



320 


…………………………………………………………Page 383……………………………………………………………

                                           第5章    總觀Application Framework  



为什么使用Application Framework 



     虽然Application Framework 并不是新观念,它们却在最近数年才成为PC 平台上软件开 



     发的主流工具。对象导向语言是具体实现Application Framework  的理想载具,而C++ 编 



     译器在PC 平台上的出现与普及终于允许主流PC 程序员能够享受Application 



     Framework 带来的利益。 



     从八十年代早期到九十年代初始,C++ 大都存在于UNIX 系统和研究人员的工作站 



     中,不在PC  以及商业产品上。C++  以及其它的对象导向语言(例如Smalltalk…80)使 



     一些大学和研究计划生产出现今商业化Application Framework  的鼻祖。但是这些早期产 



     品并没有明显区隔出应用程序与Application Framework 之间的界线。 



     今天应用软件的功能愈来愈复杂,建造它们的工具亦复如此。Application Framework 、Class 



     Library 和GUI toolkits 是三大类型的软件开发工具(请见方块说明),这三类工具虽然 



     以不同的技术方式逼近目标,它们却一致追求相同而基本的软件开发关键利益:降低写 



     程序代码所花的精力、加速开发效率、加强可维护性、增加强固性(robustness )、为组合 



     式的软件机能提供杠杆支点(有了这个支点,再大的软件我也举得起来)。 



     当我们面临软件工业革命,我们的第一个考量点是:我的软件开发技术要从哪一个技术 



     面切入?从raw API 还是从高阶一点的工具?如果答案是后者,第二个考量点是我使用 



     哪一层级的工具?GUI toolkits 还是Class Library 还是Application Framework ?如果答 



     案又是后者,第三个考量点是我使用哪一套产品?MFC 或OWL 或Open Class Library ? 



      (目前PC 上还没有第四套随编译器附赠的Application Framework 产品) 



     别认为这是领导者的事情不是我(工程师)的事情,有这种想法你就永远当不成领导者。 



     也别认为这是工程师的事情不是我(学生)的事情,学生的下一步就是工程师;及早想 



     点工业界的激烈竞争,对你在学生阶段规划人生将有莫大助益。 



     我相信,Application Framework 是最好的杠杆支点。 



                                                                      321 


…………………………………………………………Page 384……………………………………………………………

              第篇    湷觥 FC  程式設計 



                                          ,             , 

                    Application Framework  Class Library GUI toolkit 



                一般而言,Class Library 和GUI toolkit 比Application Framework  的规模小,定位也 



                没那么高阶宏观。Class Library 可以定义为「一组具备对象导向性质的类别,它们使 



                应用程序的某些功能实现起来容易一些,这些功能包括数值运算与数据结构、绘图、 



                内存管理等等等;这些类别可以一片一片毫无瓜葛地并入应用程序内」。 



                请特别注意这个定义中所强调的「一片一片毫无瓜葛」,而不像Application 



                Framework 是大伙儿一并加入。因此,你尽可以随意使用Class Library ,它并不会强 



                迫你遵循任何特定的程序架构。Class Library 通常提供的不只是UI 功能、也包括一 



                般性质的机能,像数据结构的处理、日期与时间的转换等等。 



                GUI toolkit 提供的服务类似Class Library ,但它的程序接口是程序导向而非对象导 



                向。而且它的功能大都集中在图形与UI 接口上。GUI toolkit 的发展历史早在对象 



                导向语言之前,某些极为成功的产品甚至是以汇编语言(assembly )写成。不要必然 



                地把GUI 联想到Windows ,GUI toolkit 也有DOS 版本。我用过的Chatter Box 就 



                是DOS 环境下的GUI 工具(是一个函数库)。 



               使用Application Framework  的最直接原因是,我们受够了日益暴增的Windows API 。把 



               MFC 想象为第四代语言,单单一个类别就帮我们做掉原先要以一大堆APIs 才能完成的 



               事情。 



               但更深入地想,Application Framework 绝不只是为了降低我们花在浩瀚无涯的Windows 



               API  的时间而已;它所带来的对象导向程序设计观念与方法,使我们能够站在一群优秀 



               工程师(MFC 或OWL  的创造者)的努力心血上,继承其成果而开发自己之所需。同时, 



               因为Application Framework 特殊的工作类型,整体开发工具更容易制作,也制作的更完 



               美。在我们决定使用Application Framework  的同时,我们也获得了这些整合性软件开发 



               环境的支持。在软件开发过程中,这些开发工具角色之吃重不亚于Application Framework 



               本身。 



322 


…………………………………………………………Page 385……………………………………………………………

                                                    第5章    總觀Application Framework  



 Application Framework 将成为软件技术中最重要的一环。如果你不知道它是什么,赶快 



  学习它;如果你还没有使用它,赶快开始用。机会之窗不会永远为你打开,在你的竞争 



  者把它关闭之前赶快进入!如果你认为改朝换代还早得很,请注意两件事情。第一,江 



  山什么时候变色可谁也料不准,当你埋首工作时,外面的世界进步尤其飞快;第二,物 



 件导向和Application Framework 可不是那么容易学的,花多少时间才能登堂入室可还得 



  凭各人资质和基础呢。 



 浩瀚无涯的Windows API 



Windows 版本        推出日期          API 个数            消息个数 



1。0                   1985。11               379                   ? 



2。0                   1987。11               458                   ? 



3。0                   1990。05               578                   ? 



Multimedia Ex。        1991。12               120                   ? 



3。1                   1992。04               973                   271 

    



Win32s                1993。08               838                  287 



                                            1449                                291 

Win32                 1993。08      
返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!