软件复用
UML将复用定义为:已有人工制品的使用。
记住,除了继承,还可以通过其他方式进行复用,包括代码拷贝。在建模中的最大错误之一就是为了获得复用而强迫使用不适当的泛化,这种做法通常会造成混乱。
软件复用的粒度及对应的复用策略:
- 类 ~ 工具包(类库)
- 构件 ~ 框架
- 解决方案 ~ 分析与设计模式
工具包强调在类一级进行代码复用。
在这种层次的复用中,程序员通过调用某些类库中的具体类来完成程序。 此程序的主题是程序员编写的,而不是复用的。 (就好比你调用Guava库的某些API来简化你的Java编程)
有两种工具包:
- 基础工具包:基础类由对象编程环境广泛提供,包括实现原始数据类型的类、结构化数据类型与集合。
- 体系结构工具包:体系结构类通常作为系统软件的一部分,如OS、DB、GUI软件。
框架强调构件级的设计复用。
与工具包复用不同,一个框架提供程序的骨架,程序员通过编写框架需要调用的程序代码在框架骨架里完成程序,程序本身是定制的。
除了框架本身的具体类,框架提供了大量的抽象类用于程序员实现定制的程序。
(就好比基于Spring框架来开发Web系统的Java后端)