问题标签 [domain-object]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2529 浏览

repository-pattern - 从多个 DTO 构造域对象

假设您有规范的客户域对象。您在三个不同的屏幕上显示客户:外部管理员、内部管理员和更新帐户。

进一步假设每个屏幕仅显示 Customer 对象中包含的所有数据的一个子集。

问题是:当 UI 从每个屏幕传回数据时(例如通过 DTO),它只包含完整客户域对象的子集。因此,当您将该 DTO 发送到客户工厂以重新创建客户对象时,您只有客户的一部分。

然后您将此客户发送到您的客户存储库以保存它,一堆数据将被清除,因为它不存在。悲剧接踵而至。

所以问题是:你将如何处理这个问题?

我的一些想法:

  • 在存储库中包含一个参数,指示要更新客户的哪一部分,并忽略其他部分

  • 当您加载客户时,将其保存在静态内存中、会话中或任何地方,然后当您从 UI 接收到其中一个 DTO 时,仅更新与 DTO 相关的部分

IMO,这两者都是kludges。还有其他更好的想法吗?

@chadmyers:这是问题所在。

实体具有属性 A、B、C 和 D。

DTO #1 包含 B 和 C 的属性。

DTO #2 包含 C 和 D 的属性。

UI 要求 DTO #1,您从存储库加载实体,将其转换为 DTO #1,仅填写 B 和 C,然后将其提供给 UI。

现在 UI 更新 B 并将 DTO 发回。您重新创建实体,它只填写了 B 和 C,因为这就是 DTO 中包含的全部内容。

现在您要保存仅填充了 B 和 C 的实体,其中 A 和 D 为空/空白。存储库无法知道它是否应该将持久性中的 A 和 D 更新为空白,或者是否应该忽略它们。

0 投票
5 回答
2129 浏览

design-patterns - 您如何在领域驱动设计中使用具有工厂模式的接口?

默认情况下为您的域对象工厂使用接口是否有意义,或者是否应该只在需要时为工厂类保留接口?

0 投票
2 回答
264 浏览

domain-driven-design - “域对象”是代表业务规则的任何类吗?

我遇到了“域对象”一词,并在 Google 上找到了几个定义,但我只是想验证我的理解是否正确。

这仅仅是代表业务规则的任何类吗?因为“域”一词通常表示特定于某些本地问题集的规则,例如如何计算所得税。

那么计算所得税的域对象将是您编写的代表所有税收规则的类?

0 投票
1 回答
845 浏览

java - 将域对象映射到 Java 中的 Web 服务代理对象

我正在尝试找到一种将域对象映射到由各种 Java Web 服务堆栈生成的 Web 服务代理对象的方法。Web 服务 (.NET) 和 Java 代码都使用特定规范的实现。该规范旨在提供对域类的非常详细的描述,这些描述应该在不同的平台上实现。但是,当通过 Web 服务公开 .NET 实现时,Java Web 服务堆栈最终会生成基于 WSDL 的域类,这些域类需要根据规范映射到域类的 Java 实现。例如,有两个 ENTRY 类,一个来自 Java 实现,另一个是 Web 服务调用的参数,Web 服务的消费者被迫使用 Java 域类(ENTRY )。

有什么推荐的做法吗?

最好的问候,并有一个美好的新年!

塞雷夫·阿里坎

0 投票
1 回答
6882 浏览

grails - 如何初始化 Grails 域对象中的 Date 字段以充当时间戳?

我有一个域类,其中有两个日期,我希望其中一个填充为对象创建记录时的当前时间,例如创建时间戳...

仅仅在其中一个上新建一个Date对象并让另一个可以为空,直到我需要填充它就足够了,有点像这样......

我正在试验,但我想知道这是否是正确的方法,或者是否有更多 Grailsy 或 GORMy 我应该做的事情,比如说,一个init函数,或者通过调整域对象定义来拥有一个默认,就像它做的那样idand version

谢谢

0 投票
1 回答
5362 浏览

grails - 这是对 Grails 瞬态的有效使用吗?

我有一个域对象,我想在其上存储一些仅在运行时存在的东西。我查看了文档并找到了transients关键字,从表面上看,这正是我要寻找的。这是我的域对象的样子......

whereSeeker是一个 groovy 类,它不是域对象,而是某些属性的占位符。

到目前为止一切都很好,我的联系人表没有pal预期的字段。在我ContactController的查询中,我查询了一堆联系人,c然后查找他们的Seeker朋友(如何保留的详细信息)并将该pal字段设置为一个新对象。

除了返回的 JSON 中缺少 pal 对象外,这一切似乎都可以正常工作。

这是对瞬变的有效使用吗?文档提到它们对于基于函数的 getter 和 setter 很方便,但就我而言,我想要一个实际的对象。我应该在我的对象上编写 getPal() 和 setPal() 方法吗?

谢谢

0 投票
3 回答
2626 浏览

data-access-layer - 我应该在哪里进行转换:域对象<-> DTO?

在域层还是数据访问层?

0 投票
2 回答
133 浏览

dependency-injection - DI 的使用模式/用例或何时开始使用它

我不确定在应用程序中应该在哪些用例中使用 DI。我知道注入诸如PlaceServiceor之类的服务CalculationService非常合适,但我是否也应该使用 DI 来创建我的域对象,比如 a User?如果User只有一个需要名字和姓氏的构造函数会怎样。这可以用 DI 解决吗?

我应该使用 DI 为 Set/List 接口创建实例还是这纯粹是矫枉过正?

我主要使用guice。

0 投票
1 回答
1235 浏览

php - 工作单元模式、getter、setter 和 contract (PHP)

我不确定标题是否是描述这个问题的最佳方式。

这本书 - http://apress.com/book/view/9781590599099 - 说明了工作单元模式的实现。它有点像这样。

(暂时忽略静态调用和依赖的问题)

作者指出,这种实现需要编码人员插入相关的 UoW 标记方法,并且这种对模式的选择性尊重可能会导致错误。现在,考虑到具体访问器的优缺点,您也许可以像这样自动化 UoW 调用:

所以,我的问题是,当在域对象上设置属性时,你将如何保证调用适当的 UoW 方法?

0 投票
2 回答
394 浏览

model-view-controller - MVC 应用程序中的控制器应该是每个域对象 1 个还是每组相关操作一个?

我有 MVC 应用程序,当我创建时,我从域模型 Person 的一个控制器开始。我的操作包括 AddPerson、DeletePerson、EditPerson 等。然后我开始添加更多类似 AddPersonBoss 和 RemovePersonBoss。很快我在一个控制器中就有了 20 个动作。MVC 的好处变得不那么明显了,因为我的文件包含数百行代码并且难以理解。

我看到的所有示例都显示每个域对象(例如 Person)一个控制器。感觉我应该有一个用于 AddPerson、DeletePerson、EditPerson 的 PersonManagement 控制器和一个用于 AddPersonBoss、RemovePersonBoss 的 BossManagement 控制器。

这有意义吗?为什么我不想把它分成几个控制器?在一个控制器中执行太多操作变得困难,但我看到的所有示例都是这样做的。