内容简图

软件构造——第四章助记软件构造——第四章助记软件构造——第四章助记

较详细细节重点

复用性特征:小且简单、标准且兼容、灵活性高、可扩展、使用泛型、模块化、变化具有局部性、稳定、文档丰富。
whitebox reuse:源代码可见、可修改、可扩展。
blackbox reuse:源代码不可见,不可修改。

Liskov Substitution Principle(LSP)

  • 前置条件更弱/相同
  • 后置条件更强/相同
  • 不变量要保持/更强
  • 子类型方法参数能够进行逆变(不变或者更抽象,即向参数父类走)
  • 子类型方法返回值能够进行协变(不变或者更具体,即向参数子类走)

List等<>内的类名即便符合逆变-协变条件,也不能够进行逆变-协变,该情况可以通过通配符解决:
软件构造——第四章助记
Comparator vs. Comparable
Comparator方法只需要override一个compare(T a1, T a2)方法,返回值为int。如果为1,表示a1大;-1,表示a2大;0表示同样。一般直接定义一个具体类implement Comparator来使用。
Comparable方法不同于Comparator,需要两个参数,其只需要override一个compareTo(T o)方法,因为只有一个参数,待比较参数即当前类,所以Comparable需要implement在需要比较的类处,表明当前类可比较,持有方法类相当于Comparator的a1,参数类相当于a2,返回值效果一致。

相关文章: