[ 本内容大多出自HeadFirst设计模式(中文版)/(美)弗里曼Freeman,E.等著;O'Reilly Taiwan公司译,UMLChina改编-北京;中国电力出版社2007]
(1)找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起.
(2)针对接口编程,而不是针对实现编程.
(书中原话=> "针对接口编程"的真正意思是"针对超类型编程",......可以更明确地说成" 变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口,如此,只要是具体实现此超类型的类缩产生的对象,都可以指定给这个变量.")
针对实现编程:
Dog d = new Dog();
d.bark();
针对接口/超类型编程:
Animal animal = new Dog();
animal.makeSound();
(3)多用组合,少用继承.
(4)为了交互对象之间的松耦合设计而努力.
(书中原话=>" 松耦合的设计之所以能让我们建立有弹性的OO系统是因为对象之间的互相依赖降到了最低")