原则2:针对接口编程,而不是针对实现编程。
针对接口编程,真正的意思是“针对超类型supertype编程”
举例: 针对实现编程:Dog d = new Dog();
d.bark();
针对接口/超类型编程:Animal aminal = new Dog();
animal.makeSound();
public class Duck{
QuackBehavior quackBehavior;//每个Duck都会引用实现QuackBehavior接口的对象
//.....
pulic void perforQuack(){
quackBehavior.quack();
}
}