在 Head First Design Patterns 中,有人提到您应该编写接口而不是实现,但是代码示例的最后一部分让我感到困惑。如何在运行时分配对象的具体实现是一个更好的设计?
这是否意味着将对象的实例化放在使用超类型的类的方法中更好?(一种方法,其目的是专门将对象返回给超类的变量)
//Programming to an implementation would be:
Dog d = new Dog();
d.bark();
//Programming to an interface/supertype would be:
Animal animal = new Dog();
animal.makeSound();
//Even better is assigning the concrete implementation at runtime: (says the book)
a = getAnimal();
animal.makeSound();