Loading

设计原则[2]

针对接口编程,而不是针对实现编程。

 

“针对实现编程”

Dog d = new Dog( );
d.bark( );

声明变量“ d ” 为D o g 类型( 是 Animal的具体实现),会造成我们必 须针对具体实现编码。

 

“针对接口/超类型编程”

Animal animal = new Dog( );
animal.makeSound( );

我们知道该对象是狗,但是我们现在利用animal进行多态的调用。

更棒的是,子类实例化的动作不再需要在代码中硬编码,例如new Dog(),而是“在运行时才指定具体实现的对象”。

a = getAnimal( );
a.makeSound( );

我们不知道实际的子类型是“ 什么”……我们只关心它知道如何正确地进行makeSound()的动作就够了。

posted @ 2012-11-28 15:06  .net's  阅读(288)  评论(0编辑  收藏  举报