一、继承和接口的不足之处

  • 并非所有子类都具有父类中的一切行为
  • Java接口不具有实现代码,继承接口无法达到代码的复用

二、设计原则

1. 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起:
把会变化的部分取出来并封装起来,好让其他部分不会受到影响,这样会使代码变化引起的不经意后果变少,系统变得更有弹性。

2. 针对接口(超类型)编程,而不是针对实现编程:
利用接口来代表每个行为。

3. 多用组合,少用继承:
使用组合建立系统具有很大的弹性,不仅可以算法族封装成类,更可以在运行时动态地改变行为,只要组合的行为对象符合正确的接口标准即可。

4. 为了交互对象之间的松耦合设计而努力:
松耦合的设计使对象之间的互相依赖程度降到了最低,能够让我们建立有弹性的OO系统,从而应对变化。

三、设计模式

3.1 为什么需要设计模式
  • 知道OO基础,并不足以设计出良好的OO系统
  • 良好的OO设计必须具备可复用、可扩充、可维护三个特性
  • 模式可以让我们建造出具有良好OO设计质量的系统
  • 模式让开发人员之间有共享的语言,能够最大化沟通的价值
3.2 什么是设计模式
  • 设计模式被认为是历经验证的OO设计经验
  • 设计模式告诉我们如何组织类和对象以解决某些问题
  • 设计模式不是代码,而是针对设计问题的通用解决方案
  • 大多数的模式和原则,都着眼于软件变化的主题
3.3 设计模式的核心思想

把系统中会变化的部分抽出来封装,以便以后可以轻易地改动或扩充此部分,而不影响不需要变化的其他部分