一、框架的理解
1框架与类库之间的比较
类强调数据及对数据操作的方法的内聚性,所以其支持比函数库更加有效的小规模的复用。且其并未捕捉软件中的规范控制流、协作和可变性,因而虽广泛应用但有效范围有限。
类库为第一代面向对象的开发技术。而框架被称为第二代面向对象开发技术,其对类库的扩充在于框架中的哪些类可以相互协作,来为一组相关的应用提供可复用的架构,其相互协作产生的是不完全的应用。
白盒框架:通过面向对象的诸如继承性和动态绑定的语言特征,可扩展性在白盒框架中的得以实现。人们可以复用并且定制已有功能,这是通过从框架的基类继承,并且采用类似于Template Method模式重载预先定义的虚方法来实现的,这种模式定义了一种由派生类提供各个步骤的算法。
黑盒框架:通过定义接口,可扩展性在黑盒框架中得以实现,这种接口允许目标通过组合以及委托的方式插入到框架中。人们通过定义一些类可以实现对已有功能的服用,这些类定义要遵循特定的接口,采用诸如Function Object/Bridage/Strategy、Pluggable Factory的模式将这些类继承到框架中。
黑盒框架使用比白盒简单,因为开发人员只需了解很少的框架内部构造知识,但是黑盒框架设计比白盒要复杂。
2 框架与组件之间的比较
组件是一个软件系统被封装的一部分,实现了特定的服务或是一组服务。一个组件会提供一个或多个接口为它的服务提供访问。
组件是第三代开发技术,常见包括ActiveX空间和COM组件等。
组件比框架在此法和空间上的耦合更小,例如应用能够在不需要从现有基类中间他们子类化的情况下,就可以服用组件。