什么是框架( framework )?它与一般的库( library )和工具包( toolkit )有何不同?
框架就是一组协同工作的类,它们为特定类型的软件构筑了一个可重用的设计 。与库和工具包不同之处在于前者侧重设计重用 而后两者侧重代码重用。当然,框架并不限于 OOP ,可以是协同工作的类,也可以是协同工作的函数。
一个足够复杂的应用软件开发,为确保快速有效,通常采取的方式是:在宏观管理上选取一些框架以控制整体的结构和流程;在微观实现上利用库和工具包来解决具体的细节问题。框架的意义在于使设计者在特定领域的整体设计上不必重新发明轮子;库和工具包的意义在于使开发者摆脱底层编码,专注具体问题。
框架与工具包最大的差别在截然相反的设计理念上:库和工具包是为程序员带来自由的,框架是为程序员带来约束的。 具体地说,库和工具包是为程序员提供武器装备的,框架则利用控制反转( IoC )机制实现对各模块的统一调度从而剥夺了程序员对全局的掌控权,使他们成为手执编程武器、随时听候调遣的士兵。
与框架与库和工具包不同,设计模式( Design Pattern )和架构( Architecture )不是软件产品,而是软件思想。设计模式是软件的战术思想,架构是软件的战略决策。设计模式是针对某些经常出现的问题而提出的行之有效的设计解决方案,它侧重思想重用 ,因此比框架更抽象,更普适,但多限于局部解决方案,没有框架的整体性。至于架构,一般指一个软件系统的最高层次的整体结构和规划,一个架构可能包含多个框架,而一个框架可能包含多个设计模式。
摘自:冒号课堂