这确实是关于依赖注入和方法中依赖项使用的最佳实践问题。
参加下面的课程。
class Inviter {
protected $repo;
protected $emailer;
public function __construct(\ExampleRepository $repo, \Emailer $emailer) {
$this->repo = $repo;
$this->emailer = $emailer;
}
public function getInvitedMembers() {
return $this->repo->getInvitedMembers();
}
public function sendInvitation() {
$this->repo->recordInvitation();
$this->emailer->sendInvitation();
}
}
实例化Inviter
类时,会注入ExampleRepository
和Emailer
的实例并存储其引用。但是,getInvitedMembers
方法仅使用ExampleRepository
而非Emailer
。
是否可以将这些方法重构为另一个类,以防止创建和注入可能无法使用的依赖项的开销?
如果你想要一些上下文,我用PHP编程并响应HTTP请求。应用程序将针对每个请求运行,并且每次运行时只会调用其中一个方法。
谢谢你的时间!
答案 0 :(得分:0)
我认为你的班级不遵循Single Responsibility Principle,这就是重构的原因。
避免对对象进行不必要的实例化,特别是如果实例化这些依赖项是昂贵的(可能需要为ExampleRepository
创建一个新的数据库连接,否则将不需要)。