Sus*_*ha7 13 php model-view-controller design-patterns domain-driven-design laravel
在mvc中,模型是一个层,它包含所有域业务逻辑.
在域驱动设计中,业务逻辑可以分为各种构建块.
在域驱动设计域模型中.
域模型是抽象系统,描述知识,影响或活动领域(域)的选定方面.然后,该模型可用于解决与该域相关的问题
开发人员已阅读Domain Driven Design,或正在使用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
Run Code Online (Sandbox Code Playgroud)
在mvc中,模型是一个层,它包含所有域业务逻辑.
我怀疑MVC模式本身是否声明了Domain的特殊之处.它将模型作为一个属性包运行,并不关心它是如何创建的以及它如何保护它的不变量.
与此同时,Onion架构指出,将Domain从应用程序服务中分离出来很重要(MVC框架就是这样).所以我喜欢将包含实体,值对象,域事件和聚合的域层放置到单独的模块或顶级文件夹中.
将Domain与MVC分开放置的另一个原因是它可以让您更轻松地管理多个有界上下文,因为每个上下文都需要自己的模块/文件夹.
我建议您查看这个ASP MVC项目结构.它由着名的DDD专家设计.除了域名,请看看MVC部分的组织方式.它利用了功能切片方法,这种方法现在变得越来越流行,我发现它非常有用.
归档时间: |
|
查看次数: |
3852 次 |
最近记录: |