我应该将它们包装在服务类中还是直接注入?
1)直接使用。缺点:没有合同,对我无法控制的事物有很强的依赖性。优点:简单。
dist(src, B) + dist(B, C)
2)与包装纸一起使用。缺点:更多写作。优点:合同牢固。
dist(src, B) + dist(B, C)
在这种情况下,我可以注入namespace App;
use AlienPackageClass;
class MyClass {
protected $alien_class;
public function __construct(AlienPackageClass $class){
$this->alien_class = $class;
}
}
而不是namespace App\Services;
use AlienPackageClass;
class AlienPackageClassService implements AlienPackageClassInterface {
protected $alien_class;
public function __construct(AlienPackageClass $class){
$this->alien_class = $class;
}
public function getSomething(){
}
}
interface AlienPackageClassInterface {
public function getSomething(): bool;
}
。
走哪条路?
答案 0 :(得分:1)
'strong dependency on things I cannot control'
是我的关键字。不想让我的代码无法控制的事情。
特别是,如果您认为自己可能会在将来实现AlienPackageClassInterface
的另一个实例,则可能要继续第二种选择。
但是,正如他们所说,再说一遍,这些东西不必是宗教性的。哪种方案最能解决业务目标,应该是赢家。
*也跟随此线程进行其他回复。