如果我使用setter进行依赖注入,并且许多类都需要相同的依赖项,那么我是否应该让所有这些类扩展一个带有依赖项setter的基类?
例如:
假设我有三个类:Page,Article,Comment,所有这些都依赖于$ db和$ user。
拥有基类依赖关系有什么好处或缺点,如下所示:
class Dependencies
{
private $database;
private $user;
final public function setDatabase($dbh)
{
$this->database = $dbh;
}
final public function setUser($user)
{
$this->user = $user;
}
}
然后将其他类作为依赖项的扩展
class Article extends Dependencies
{
public function __construct()
{
// some code
}
// some other functions that use $this->database and $this->user
}
而不是在每个单独的类(Article,Page和Comment)中都存在setDatabase和setUser。
感谢。
答案 0 :(得分:0)
拥有一个名为Dependencies的类是个坏消息。文章不是依赖项的子类型。
这是特质可能更合适的地方。
trait DatabaseOwner
{
private $database;
final public function setDatabase($dbh)
{
$this->database = $dbh;
}
}
class Article
{
use DatabaseOwner;
}
如果您发现自己经常使用同一组,则可以创建包含多个特征的特征。
然而,所有这些说:如果这三个类都来自一个更好的命名类,它代表一个is-a关系并且它实现了那些函数(或使用特征),因为它是基类型的固有特性,那么完全可以接受。
但是,仅仅因为碰巧分享某些属性而创建一个单一的基类在我看来并不好。