鸭子类型

动态类型语言对变量类型的快通给事件编码带了了很大的灵活性.由于无需进行类型检测,我们可以尝试电泳任何对象的任意方法,而无需去考虑它原本是否被设计为拥有该方法.
这一切都建立在鸭子类型(duck typing)的概念上,鸭子类型的通俗说法是:"如果它走起路来像鸭子,叫起来也是鸭子,那么它就是鸭子"
在动态类型语言的面向对象设计中,鸭子类型的概率至关重要.利用鸭子类型的思想,我们不必借助超类型的帮助,就能轻松地在动态类型语言中实现一个原则:"面向接口编程,而不是面向实现编程."例如,一个对象若有push和pop方法,并且这些方法提供了正确的实现,它就可以被当做栈来使用.一个对象吐过有length属性,也可以依照下标来存取属性,这个对象就可以被当做数组来使用.
在静态类型语言中,要实现"面向接口编程"并不是一个容易的事情,往往要通过抽象类或者接口等将对象进行向上转型.当对象的真正类型被隐藏在它的超类型身后,这个对象才能在类型检测系统"监视"之下互相被替换使用.只用当对象能够被互相替换使用,才能体现出对象多态性的价值.

你可能感兴趣的:(鸭子类型)