使用以下简单示例(在php中编码):
public function doSomething(Registry $registry)
{
$object = $registry->getData('object_key');
if ($object) {
//use the object to do something
}
}
public function doSomething($registry)
{
$object = $registry->getData('object_key');
if ($object) {
//use the object to do something
}
}
这两种方法有什么好处?
两者最终都会在不同的点上失败:
如果传递了非Registry类型的对象,则第一个示例将失败,如果传递的对象未实现getData方法,则第二个示例将失败。
您如何选择何时使用这两种方法?
答案 0 :(得分:0)
这是两种不同的设计方法。责任在于开发人员以确保任何一种方法都不会失败。
类型提示是一种更强大的方法,而鸭子打字可以提供更大的灵活性。