《写给大家看的面向对象编程书》总结&&实践(9)

构建对象

前面主要的内容是继承、接口、抽象类和组合如果结合使用。本章主要关于整体设计中对象之间如何关联的问题。

继承和组合在构建对象上的方式有显著区别,使用继承是,结果是单个类,其中覆盖继承层次结构中的所有行为和属性。而使用组合时,会使用一个或者多个类来构建另一个类。

使用组合

使用组合的原因,可以通过结合不太复杂的部分来构建系统。

分阶段构建

要构建高质量的软件,必须遵守的一条最高原则才能成功:尽可能成功。要让软件系统正常地工作而且易于维护,它们必须分解为较小、更可管理的部分。

诺贝尔得主Herbert Simon对稳定系统的观点:

  • “稳定的复杂系统通常采用一种层次结构的形式,其中各个系统都是由更简单的子系统构成,而各个子系统则由更贱的下一级子系统构成”

  • “稳定的复杂系统几乎都是可以分解的”

  • “稳定的复杂系统几乎总是由几个不同类型的子系统组成,并以不同的结合方式组织”

  • “能正常工作的稳定系统几乎总是由能正常工作的简单系统发展而来”

不同类型的组合

一般来说,组合有两种类型:关联和聚集

聚集

聚集是指一个复杂对象由其他对象组成。

关联

当一个对象希望另一个对象为它完成某个服务时则使用关联。

结合使用关联和聚集

与以往一样,做设计决策时并没有一种绝对正确的答案。设计不是精确的科学,尽管我们可以遵守一些一般规则,但是这些规则并不是硬性规定。

避免依赖性

小结

聚集和关联。继承表示在现有对象基础上创建新对象,而组合表示不同对象之间的交互。