框架vs.类库

2.5  专题:框架技术
接下来,对框架技术进行专门讨论。

2.5.1  框架vs.类库
对面向对象开发而言,类库和框架有很多共同之处,但它们确确实实又是不同的。通过比较框架和类库的区别,可以更深入地理解框架的概念和内涵。如图2-14所示,框架是一种介于类库和应用系统之间的概念。
[img]

[/img]

框架介于类库和应用系统之间
类库是类的集合,这些类之间可能是相互独立的。应用开发者希望使用任何一个类时可以直接调用它,而不必再写一个。与类库相比,框架和类库有着相似的形式,即框架也往往是类的集合;但不同之处在于,框架中的各个类并不是孤立的,而框架中的业务逻辑代码是将不同的类“连”在一起,在它们之间建立协作关系。图2-15很好地表达了上述意思。

[img]

[/img]
类库与框架
(图片来源:《应用框架的设计与实现——.NET平台》)
Xin Chen在他的著作《应用框架的设计与实现——.NET平台》一书中写道:

框架通过封装处理流程的控制逻辑,使它对开发者透明,来简化开发工作。这种封装也是框架和类库(class library)的区别之一。类库由许多现成的、供开发者用于构建应用的组件组成,但是,开发者必须理解不同组件之间的关系,并编写处理流程代码把众多组件组织起来。框架则不同,它通过预先把众多组件组织在一起的方式,封装了处理流程的控制逻辑;因此,开发者就不用再编写控制逻辑来组织组件之间的交互了。……

……应用开发者使用类库这种方法时,必须编写管理类库中不同组件实例(instance)的控制流程。为此,应用开发者必须充分理解每个相关组件,以及组织组件协作所必需的业务逻辑。而使用框架这种方法时,由于大部分处理流程已经被框架管理了起来,所以开发者需要编写的控制代码就非常少。由于应用框架隐藏了不同组件之间的处理流程,这就免去了开发者编写协调逻辑(coordination logic)之苦,也不用经历编写这些协调代码的学习曲线了。既然处理流程的控制逻辑从应用层移到了应用框架层,那么框架的设计人员就要运用其架构和领域知识,来定义框架内的组件该如何协作;而使用框架的开发者,几乎无须知道框架组件如何协作,就能高效地开发应用。

由此可见,从重用的角度来比较,框架提供的重用性比类库更大。类库的目标是提供通用的类,如果是Utility类的情况(包含多个static方法),将其目标理解成提供通用的函数(就像C语言时代的函式库一样)也未尝不可;而框架的目标是提供在某领域内通用的软件系统半成品(或子系统半成品)。

猜你喜欢

转载自zhizhizou.iteye.com/blog/1169418
今日推荐