动态类型语言对变量类型的快通给事件编码带了了很大的灵活性.由于无需进行类型检测,我们可以尝试电泳任何对象的任意方法,而无需去考虑它原本是否被设计为拥有该方法.
这一切都建立在鸭子类型(duck typing)的概念上,鸭子类型的通俗说法是:"如果它走起路来像鸭子,叫起来也是鸭子,那么它就是鸭子"
在动态类型语言的面向对象设计中,鸭子类型的概率至关重要.利用鸭子类型的思想,我们不必借助超类型的帮助,就能轻松地在动态类型语言中实现一个原则:"面向接口编程,而不是面向实现编程."例如,一个对象若有push和pop方法,并且这些方法提供了正确的实现,它就可以被当做栈来使用.一个对象吐过有length属性,也可以依照下标来存取属性,这个对象就可以被当做数组来使用.
在静态类型语言中,要实现"面向接口编程"并不是一个容易的事情,往往要通过抽象类或者接口等将对象进行向上转型.当对象的真正类型被隐藏在它的超类型身后,这个对象才能在类型检测系统"监视"之下互相被替换使用.只用当对象能够被互相替换使用,才能体现出对象多态性的价值.
鸭子类型
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- python与鸭子类型 调用不同的子类将会产生不同的行为,而无须明确知道这个子类实际上是什么,这是多态的重要应用场...
- 模板为C++提供了鸭子类型(Duck typing)的特性。所谓鸭子类型,指的是代码关注的不是对象的类型本身,而是...