软件开发的一个不变真理:不变的是变化
1. 把会变化的部分取出来并“封装”起来,好让其他部分不受影响。(封装变化)
2. 针对接口编程(真正的意思是“针对超类型”编程),而不是针对实现编程。
针对实现编程
Dog d = new Dog();
d.bark();
声明变量 d 为 Dog的类型,(是Animails的具体实现),会造成我们必须针对具体实现编程。
但是,“针对接口/超类型编程”,做法如下
Animal animal = new Dog();
animal.makeSound();
我们知道该对象是狗,但是我们在利用animal进行多态的调用。
3.多用组合,少用继承。
4.为了对象之间的松耦合设计而努力。