老师,您好,我本身是做 PHP 的。所以,使用 PHP 来描述我自己在学您的课程之后得到的一点理解。你看,这样的理解,是不是正确。
public function getConfigs($configObject)
{
return $configObeject->getConfigs();
}
这是一个获取配置的方法,其不管传入的对象是什么,只要其实现了getConfigs
方法即可。这非常灵活,而且是在运行时确定的。只有运行到这行代码,才能够确定这对象是否存在这个方法,如果不存在就报错了。这和您课程中举例的 Python 的例子是一样的。
同样是 PHP, 上面的代码如果改成下面这样子,就不是 duck typing:
public function getConfigs(ConfigInterface $configObject)
{
return $configObeject->getConfigs();
}
之所以不是鸭子类型,和您在举的 Java 例子是一样的,因为它必须实现ConfigInterface
接口才可以,所以不是 duck typing。
我并不太了解 Java,不知道拿您使用 Java 的例子,套用在 PHP 上是否仍旧适用。如果您看到,还希望帮我确认一下。感谢!