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();