这样, 顶层代码不关注底层到底是由哪个服务来发送邮件--不管是 Mandrill, Mailgun 还是 SendMail, 都不重要, 因为所有 mailer 类都实现相同的接口....__construct(Mailer $mailer)
{
$this->mailer = $mailer;
}
public function userWasAdded...;
});
}
}
从例子中可以看到, 可以通过构造函数把 Mailer 类注入到对象....Laravel 的容器让实例化这样的一个类变得很容易, 因为它会自动把依赖项注入构造函数. 比如, 我们可以创建该类的一个新实例, 但不需要传入 Mailer....冲突
假如只是对象中的某一个方法需要用到注入的类呢? 构造函数会因为很多只用到一次的注入变得非常凌乱.
另一种情况, 假如需要通过注入类执行某些操作, 但只针对特定的方法执行呢?