我希望我管理一个comprehensiv的方式来解释这一点: 假设我们有一个“库”对象。在这个“库”中,我们有许多“书”对象,每个“书”对象都有一个“作者”对象。 事情是这样的:Dependencie注射斗争
class library {
private $books = [];
public function addBook(book $book){
$this->books[]=$book;
}
function getAllBookTitles(){
foreach($this->books as $book)
$r[] = $book->getTitle();
return $r;
}
}
class book {
private $author;
private $title;
public function __construct(author $author){
$this->author = $author;
}
function getTitle(){
return $this->title;
}
function setTitle($title){
$this->title = $title;
}
}
class author {
public function __construct(){}
}
现在我真的不明白: 时,在一些观点,我只需要一个图书馆的所有书籍的标题,为什么还要建立笔者对象的列表? 这仅仅是一个例子,但是构建“作者”对象的代价相当昂贵......然后,这将使用大量不需要的数据资源。
我明白,你可以通过一个setter方法注入“作者”,使其可选的,但我想用一个工厂打造“书”的对象。
那么,到底是什么要告诉你的工厂(或仓库)什么可选依赖它应该建立对象的最佳方式?
也许在这里我的做法是完全错误的,和我的问题并没有做出很大的意义。如果是这样,我表示歉意。 任何帮助让我在正确的方向将不胜感激。
尝试找到一个关于'延迟加载对象和依赖注入'的好文章,这样''dependencys'只会在真正需要的时候创建。 – JustOnUnderMillions
谢谢。这帮了我很多。然而,我有点惊讶;当进行惰性加载和依赖注入时,没有很多结果。这不是每个人都应该感兴趣的话题吗?或者这是很常见的做法,我的缺乏理解是责备? – minychillo