设计原则:
(1)找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
(2)针对接口编程,而不是针对实现编程。
(3)多用组合,少用继承。
(4)类应该对扩展开放,对修改关闭。
“针对实现编程”
Dog d = new Dog();
d.bark();
“针对接口/超类编程”,利用多态。
Animal animal = new Dog();
animal.makeSound();