在DDD中,还有一个领域实体的概念,它具有唯一的标识符。据我所知,用户是实体的一个很好的例子(例如唯一的用户ID)。实体有一个生命周期——它的值可以在操作过程中发生变化,然后被保存或丢弃。
上述描述的实体难道不就是MVC中的Model应该扮演的角色吗?我的理解是否正确呢?
为了让事情更加混乱,您还可以引入其他模式,例如存储库模式(可能会放置一个服务)。存储库如何与实体交互是非常清楚的,但是它如何与模型交互呢?
控制器可以有多个模型,这使得模型似乎不是一个“数据库表”,而是一个独特的实体。
更新:在此帖子中,将Model描述为具有知识的东西,并且可以是单个对象或对象集合。因此,实体和模型更或多或少相同。模型是一个全面的术语,而实体更加具体。值对象也可以是一个模型。至少在MVC方面是这样的。可能吗?
因此,在非常粗略的条件下,哪个更好呢?
没有真正的“Model”...
class MyController {
public function index() {
$repo = new PostRepository();
$posts = $repo->findAllByDateRange('within 30 days');
foreach($posts as $post) {
echo $post->Author;
}
}
}
还有这个,它的DAO使用模型作为基础?
class MyController {
public function index() {
$model = new PostModel();
// maybe this returns a PostRepository?
$posts = $model->findAllByDateRange('within 30 days');
while($posts->getNext()) {
echo $posts->Post->Author;
}
}
}
这两个例子甚至没有做我上面描述的事情。我显然迷失了方向。有任何建议?