快速业务通道

冒号课堂§1.0:开班导言 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
与一般的库(library)和工具包(toolkit)有何不同?”

引号应答:“框架就是一组协同工作的类,它们为特定类型的软件构筑了一个可重用的设计。与库和工具包不同之处在于前者侧重设计重用而后两者侧重代码重用。”

“嗯,有点标准答案的味道。”冒号夸道,“如果吹毛求疵的话,框架并不限于OOP,可以是协同工作的类,也可以是协同工作的函数。一个足够复杂的应用软件开发,为确保快速有效,通常采取的方式是:在宏观管理上选取一些框架以控制整体的结构和流程;在微观实现上利用库和工具包来解决具体的细节问题。框架的意义在于使设计者在特定领域的整体设计上不必重新发明轮子;库和工具包的意义在于使开发者摆脱底层编码,专注特定问题和业务逻辑。”

问号提出问题:“框架与库和工具包看起来很相似——都是一些代码集合,都提供一些API(应用编程接口),是什么使得它们不同呢?”

“问得好!”冒号赞言,“框架与工具包最大的差别在截然相反的设计理念上:库和工具包是为程序员带来自由的,框架是为程序员带来约束的。具体地说,库和工具包是为程序员提供武器装备的,框架则利用控制反转(IoC)[1]机制实现对各模块的统一调度从而剥夺了程序员对全局的掌控权,使他们成为手执编程武器、随时听候调遣的士兵。”

叹号苦着脸:“程序员原来就是一小卒子啊!”

“哪个将军不是从小卒做起的?”冒号反问道,“不错,框架是在语言的语法规则之外施加于程序员的又一层枷锁,但没有规矩不成方圆。正如行军打仗,讲究排兵布阵,程序员就是那兵,框架就是那阵。”

句号说:“可不可以这么理解,框架就是一些人——也就是框架设计者,把一个软件开发中最甜的部分啃掉了,剩下部分留给下面的人?”

“从某种意义上说,是这样。”冒号点点头。

冒号课堂§1.0:开班导言(11)

时间:2011-06-25 blogjava xyz98

逗号很不甘心:“我就想啃最甜的部分。”

“当心别把牙给崩掉。”冒号笑道,“不是打击你,首先你还没那本事;其次即使你有本事也未必有机会;最后即使有本事也有机会,重新设计框架也未必是好的选择。就说大名鼎鼎的Struts吧,哪怕你设计出比它更高明的框架也不会被采用,因为前者早已成为Java平台上网络开发的事实(De Facto)标准,公司很容易从市场上招到懂Struts的程序员,不必培训即可上手,成本低见效快。过去许多公司都有自己的网络框架,但最后大多都放弃了,并不是因为Struts更优秀,而是因为它更普及。毕竟大多数软件开发是以金钱而不是技术为中心的。”

问号提议:“您能谈谈设计模式和架构吗?”

冒号侃侃而谈:“与框架与库和工具包不同,设计模式(design Pattern)和架构(architecture)不是软件产品,而是软件思想。设计模式是软件的战术思想,架构是软件的战略决策。设计模式是针对某些经常出现的问题而提出的行之有效的设计解决方案,它侧重思想重用,因此比框架更抽象、更普适,但多限于局部解决方案,没有框架的整体性。与之相似的还有惯用法(idiom),也是针对常发问题的解决方案,但偏重实现而非设计,与实现语言密切相关,是一种更底层更具体的编程技巧。至于架构,一般指一个软件系统的最高层次的整体结构和规划,一个架构可能包含多个框架,而一个框架可能包含多个设计模式。”

引号愈发疑惑:“这些不是都很重要吗?”

“当然都很重要。不过——”冒号话锋一转,“在没有打好基础前,架构只是空中楼阁,因此不可能现在谈它。至于框架,不同的应用

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号