guiwoda / domain-requirements
此包已被弃用且不再维护。未建议替代包。
0.1.0
2014-09-22 17:53 UTC
Requires (Dev)
- phpspec/phpspec: ~2.1@dev
This package is not auto-updated.
Last update: 2022-02-01 12:39:50 UTC
README
此包旨在提供一个简单且语义化的方式,将您的展示需求与领域对象解耦。
问题
当我们构建网站时,我们通常会从反映数据结构的简单页面开始。我们构建的 控制器
通常依赖于某些 仓库
或适配器 服务
,它们作为数据抽象。但是随着系统的增长,这些 控制器
开始依赖于多个此类对象,最终导致 控制器
成为领域模型不同部分的巨大协调者。
我们立即认识到这是一个问题,并将此逻辑移动到我们的 领域
层。这创建了一个不同的架构,其中任何新的展示层所需数据都需要修改我们 领域
内部的协调对象,这可以说是我们将 领域
与展示需求耦合在一起!
提出的解决方案
控制器
与 领域
之间的连接通常通过封装来实现。依赖关系箭头总是指向 领域。但是存在 隐式 依赖关系,它们从 领域
指向外部,这正是此包旨在改变的地方。
每个控制器将创建一个(一组)需求
对象。这些 需求
是 POPOs,它们将作为我们展示层和领域之间的 数据传输对象
。在这个对象中,控制器将列出其所有 领域
依赖项,并将包括解决这些依赖项所需的所有相关参数。
需求
对象将被发送到 负责者
对象以进行解决。这些 负责者
应事先以身份映射的方式相关联,表明它们承诺解决哪些 领域需求
。提供了一个 CallbackResponsible
实现作为以不更改任何对象接口的方式开始使用此模式的一种简单方法。如果回调不足,任何对象都可以实现 负责者
并对 需求
进行响应。
TL;DR
使用 需求
列出您期望从 领域
获得的内容。使用 负责者
来响应这些需求。哦,还有,始终面向接口编程!