・原封不动地复用既存类。
��只要有可能就应当复用既存类。为了达到此目的,开发人员必须能够从资源库中找到可提供所需行为的类。有时应用问题的解决与以往的一些项目类似,可以复用那些项目中定义和实现的类。最常见的原封不动的复用是对低层的基本数据结构的复用。对于较一般的结构,可以在实例化时使用参数来规定它们的行为。
��必须保证在资源库中的类都是稳定的,得到了有效的实现并经过了彻底的测试。不用进一步的实现和类测试。不过还需要对这个类的实例进行组装测试。但这应是应用开发过程的一部分而不应是类开发过程的一部分。
・对既存类进行演化以得到满足要求的类。
��多数复用情况是一个类已经存在,它提供的行为类似于要为新类定义的行为。开发人员可以使用既存类做为定义新类的起点。新类将根据既存类渐进式地演变而成。这样,在开发一个新类时,只需要花费较少的工作量就能复用许多既存类,得到所需要的新类。
��演化可以是横向的,也可以是纵向的。横向的演化导致既存类的一个新的版本,而纵向的演化将从既存类导出新类。
・重新开始进行开发。
��任何一个类,只要它的开发不涉及既存类,就可看做是一个新的继承结构的开始。一个新的继承结构将建立两种类:一种是抽象类,它概括了将要表达的概念;另一种是具体类,它要实现这个概念。
��单个类的低层设计涉及一些重要的关系,如继承和组装。这两种关系都履行了一个重要的原则:不是绝对必须做的工作就不要做。
��① 组装关系:这种关系指明一个实体的表示中的某些局部可以利用其他实体给出。就是说,一个类的定义中可以包括另一个类的实例。新类的实现可以有效地使用既存类的行为。例如,在实现一个仿真器类时需要使用一个队列类的实例和一个计时器类的实例。组装关系表示了类之间的实现级连接。
��② 分类关系:这种关系就是继承关系,使用一个类的既存定义做为一个新类定义的一部分,就是说,继承关系表征了一个类是另一个类的特殊情形。这种关系将一个既存类的定义和一个新类的特殊部分定义组织成为一个完整的类定义。
��
|