听到“鸭子”,大家首先想到的便是乱叫不休的家禽。不过,计算机领域内还有一种跟“鸭子”有关的说法,那就是“鸭子类型”。
所谓鸭子类型,是一种在动态语言中广泛使用的特性。它的核心定义是:在非强制性类型绑定的语言中,对象的真实类型无关紧要,只要它能在上下文中表现出指定类型的行为,就可以被看作为这种类型。
有没有感觉很绕?来看一个例子吧。
我们知道,一只鸟会有“叫”的行为。现在来了一只“鸭子”,它也会“叫”。那么鸭子就可以被看作为“鸟”类型的对象,因为它所表现出来的行为与“鸟”类型的行为一致。
鸭子类型的设计思想非常的灵活,适用于各种类型继承模型固化较强的语言中。然而,使用它也会带来隐患,譬如我们在使用时必须保证所处理的数据结构不低于某个“标准”,否则就会出现奇奇怪怪的问题。