假设类Foo需要注入类Bar。我是否应该键入方法参数,因为我知道Bar需要什么,或者我不应该键入它,以防将来Bar更改?
class Foo {
public function __construct( Bar $bar ) {
// do something
}
}
或:
class Foo {
public function __construct( $bar ) {
// do something
// the wrong class could be passed in here, but I'm also future-proof in case
// another class provides similar functionality to Bar
}
}
据推测,“最佳”答案是让Bar实现一个界面,但我真的觉得很难创建一个在可预见的未来只有一个扩展类的界面。什么是最佳做法?
答案 0 :(得分:2)
简单易用的解决方案:现在输入Bar
,然后创建一个界面并更改typehint。如果您正确使用重构实践并很好地设计代码,那么以后更改应该没有效果。