在mvc中,模型是一个层,它包含所有域业务逻辑。
在领域驱动的设计中,业务逻辑可以分为各种构建块之类。
在域驱动设计域模型中。
域模型是一种抽象系统,描述了知识,影响或活动(域)领域的选定方面。然后可以使用该模型来解决与该领域相关的问题
开发人员已经阅读了域驱动设计,或者正在使用Doctrine2或Hibernate,通常会更好地关注DDD中的域模型。在mvc框架中,模型层与DDD中的域模型重叠,这意味着我们可以在模型文件夹中实现域模型mvc框架
这样的实现如下所示。显示了模型文件夹的结构
Model(this can model or domain)
|
|----Entities
| |---BlogPost.php
| |---Comment.php
| |---User.php
|
|----Repositories
| |---BlogPostRepository.php
| |---CommentRepository.php
| |---UserRepository.php
|
|----Services
| |---UserService.php
|
|----factories
| |---userfactory.php
|
|----dataMappers
| |---userDataMapper.php // this inherit from Eloquent model
|
|----ValueObject
在mvc中,模型是一个层,它包含所有域业务逻辑。
我怀疑MVC模式本身是否对Domain声明了一些特殊之处。它将模型作为一袋属性使用,而不关心模型是如何创建的以及如何保护其不变性。
同时,洋葱架构指出,将域与应用程序服务(MVC框架隔离)隔离很重要。所以我想将包含Entities,Value对象,Domain事件和Aggregation的Domain层放置到单独的模块或顶级文件夹中。
将Domain与MVC分开放置的另一个原因是,它使您可以更轻松地管理多个有界上下文,因为每个上下文都需要自己的模块/文件夹。
我建议您检查一下此ASP MVC项目结构。它是由著名的DDD专家设计的。除了域之外,请查看MVC部分的组织方式。它利用了功能切片法,这种方法在当今越来越流行了,我发现它非常有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句