我想了解有关存储库模式的原则。但是我遇到了另一个问题。在我看来,存储库模式会导致很多开销。
举个例子:
我的实体类看起来像这样:
class newsEntity
{
private $title;
private $content;
private dateCreated;
private $author;
private $category; // just 1 category possible for simplicity
# .. Getter and Setter methods ...
}
存储库的结构如下(当然是简化版):
class newsRepository
{
public function getNewsByYear ( $year )
{
$newsList = array();
// Some ORM code which fills $newsList with newsEntity objects
}
}
客户端代码大致如下:
$repo = new newsRepository();
$news = $repo->getNewsByYear(2011);
foreach ( $news as $item )
echo $item->getTitle() . " " . $item->getDateCreated();
这只是简单地显示了从2011年找到的所有新闻项的标题和创建日期的列表。
现在我的问题是,我只使用实体对象的$title和$dateCreated属性。但所有其他属性也被填充了,但我从未使用过它们!这意味着如果getNewsByYear检索到3000条记录,则还会填充永远不会使用的对象中的许多属性... 这不应该是个大问题吗...?当然,如果它是聚合,情况会更糟...
我还不确定的另一件事是:我的仓库是否总是需要返回实体对象?或者当我只需要显示标题或类似内容时,它也可以返回一个字符串..?