问题标签 [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 投票
1 回答
485 浏览

php - 如何访问视图中的模型 - Symfony 2

我有以下模型:

我有以下控制器:

如何访问视图中的模型数组。有没有办法直接访问模型或者我必须像这样分配一个属性:?

看法:

上述问题将是用户可以将其更改为

0 投票
1 回答
3811 浏览

forms - 一次提交多个 grails 域对象

我有一个表单,用户可以在其中输入同一域类的许多记录。这些记录中的每一个都应在提交后进行验证。如果验证成功,则应将记录集合传递到另一个视图,否则应在同一视图中显示验证错误,并保留先前输入的值。应使用专用命令对象进行验证。

为了画得更好,表格大致是这样的: 在此处输入图像描述

我想出了一个将每条记录映射到表单的解决方案(项目列表是从呈现视图的初始操作返回的):

和模板:

但我不确定这种方法的正确性。

在实施此方案时,我面临一些挑战:

  1. 有没有更好的方法将每个记录实例映射到视图中的字段行,以便一行字段代表一个记录?
  2. 如何通过一次调用控制器操作来传递和验证整个集合?

提前致谢。

0 投票
3 回答
615 浏览

entity - 领域驱动设计 - 值对象或实体

我有一个关于在下面的案例中识别值对象以及我必须如何实现它的问题。

案子:

在在线社区中,用户可以创建自己的私人/公共页面(例如 Facebook)。在此页面中,他们可以发布帖子等。这些帖子可以由其他用户评分。不仅帖子可以评分,而且整个页面都可以被其他用户评分。

因此,如果我尝试对此进行建模,我最终会得到 3 个实体(页面、用户、帖子),它们在此内容中都有唯一的身份。但是收视率呢?我倾向于使用价值对象,因为评级在此内容中没有足够的身份(没有它可以存在帖子或页面)并且没有用户就无法存在。

问题:它是一个值对象还是一个实体:)

谢谢!

0 投票
3 回答
808 浏览

entity - DDD 中的值对象

我的销售模块中有Order和类,该类用于一些分类目标并在s 上应用一些业务规则。每个班级都有自己的桌子。OrderTypeOrderTypeOrder

我想DDD在我的项目中应用技术。所以,我认为这Order是一个聚合根,但是呢OrderType?它是否也包含在Order聚合中,还是一个Value 对象?我认为这将是一个价值对象。我对么?

在此处输入图像描述

0 投票
1 回答
757 浏览

c# - 将域对象映射到持久对象

这不是一个有明确答案的问题,但我需要一些关于我的架构的建议。关于这个话题可能有很多不同的意见。

我正在尝试将我的架构从愚蠢的实体转移到丰富的领域对象。在我当前的版本中,我有抽象的域对象,它们具有代表业务逻辑的只读属性和方法:

我从它们派生来实现到持久性实体的映射并实现保存逻辑:

这很容易工作,该项目始终有效,因为它没有公共设置器并且可以测试,甚至与文档的映射。

但我也意识到了一些问题:

  1. 我总是忘记映射一些属性,没有办法告诉 MongoProject 它必须序列化什么。
  2. 有时实现映射相对复杂,因为您不知道 save 方法内部发生了哪些更改,尤其是在项目是复杂聚合根的情况下。在我的情况下,使用 mongodb 实现持久性非常容易,但对于实体框架来说却是一场噩梦。

您如何解决应用程序中的持久性问题以及映射问题是否有其他解决方案?

0 投票
2 回答
528 浏览

php - 域对象:setter 和 getter 还是只是公共属性?

我应该在设置域对象属性时验证它们吗?

在这个例子中,我从我的模型层获得了一个用户域对象,目前只是在设置属性之前验证传入参数的类型和/或格式,因为我不知道应该验证什么域对象。一些例子可以帮助我理解它。

这是我应该如何验证域对象属性还是根本不应该验证它们?

在后一种情况下,我可以删除每个 setter 和 getter,并将域对象属性公开,这样我就可以直接与它们交互。

0 投票
1 回答
114 浏览

php - 清理我的应用程序结构...域对象和数据映射器

两年来的大部分时间里,我一直在使用 ZendFramework 1.1 开发一个应用程序,因此从我学习或尝试新事物开始,它已经看到了几个不同的重构阶段。在目前的状态下,我觉得我的结构非常好,因为我可以快速完成工作,但肯定可以在某些领域进行一些改进——我觉得有很多臃肿和尴尬的依赖关系。

当我从我的应用程序中放下一些示例代码时,请耐心等待。我将使用一个对象的示例,该Order对象具有OrderItem也必须保存的实例。我将解释实例化和保存的所有必要部分。

就我的理解而言,我在这里所做的更符合ActiveRecord设计模式而不是Domain Models,尽管我认为我在这两个方面都有实践......

BaseObject 中存在数据的解析、保存以及几乎所有适用于所有模型(更合适的术语可能是实体)的任何其他内容,如下所示:

基类对,和DataMapper有非常简单的实现,因为是按对象定义的,所以它们永远不会重载。我觉得这有点不稳定,但我猜它有效吗?子类本质上只是提供特定于域的查找器功能,例如,或其他类似的东西。saveinsertupdate$schemaBaseMapperlookupOrderByNumberfindUsersWithLastName

我觉得我所拥有的不一定是可怕的,但我也觉得这里有一些不太好的设计。我的担心主要是:

模型有一个非常严格的结构,它与数据库表模式紧密耦合,使得从模型或数据库表中添加/删除属性完全是一件麻烦事!我觉得给我所有保存到数据库 a$table$mapper构造函数中的对象是一个坏主意......我怎样才能避免这种情况?我能做些什么来避免定义$schema

验证似乎有点古怪,因为它与模型上的属性名称紧密相关,模型上的属性名称也对应于数据库中的列名称。这使进行任何数据库或模型更改变得更加复杂!有没有更适合验证的地方?

DataMappers除了提供一些复杂的查找器功能外,并没有做太多的事情。保存复杂对象完全由对象类本身处理(例如,Order我的示例中的类。除了“复杂对象”之外,这种类型的对象还有适当的术语吗?我说我的Order对象是“复杂的”,因为它有OrderItem它还必须保存的对象。DataMapper 是否应该处理当前存在于Order类中的保存逻辑?

非常感谢您的时间和投入!

0 投票
1 回答
126 浏览

c# - Mongodb persist domain entity and protect invariants

I am using domain driven design with an aggregate root and child entities.

The aggregate invariants are enforced via the aggregate root ConfigurableService methods, chaining through to methods of the child entities, with a list of Groups and Dependencies which map requirements between the groups.

One invariant example is ConfigurableService only allow the dependency to be made if the SkuIds are in contained within one of the Groups in the list.

If i go and make Groups or Dependencies public (as mongodb requires for persitence), then this domain logic can be bypassed - So i thought the class could be expanded with public properties which would call the entity methods, such as the below Dependencies and Groups properties:

I would repeat for each internal property that needs to be persisted as this will check the domain logic.

This would work fine during reading from repository when the object is built, as long as the properties are set in the correct order... for instance if Groups were set before Dependencies we would end up throwing an exception (SkuID doesnt exist).

Questions

  1. What are the recommended ways to protect invariants and allow Mongodb to persist/retrieve the domain entity object?

  2. Can i control the order the properties are set when mongodb hydrates from its database?

  3. Or would i be best to create a custom serialization method (how would i do this)?

0 投票
2 回答
662 浏览

grails - 如何实现只读控制器动作

我有一个Order域类 ( hasMany = [items: Item]) 和一个编辑屏幕,可让您编辑Order.

编辑屏幕具有totalCost通过 ajax 计算的字段,如items添加/删除。后端计算totalCost比较复杂(前端不能做,必须后端做),取决于:

  • 编辑屏幕上未保存更改的状态
  • 正在编辑的属性,order它们不在编辑屏幕上

所以,为了进行totalCost计算,我做了这样的事情:

这样做的问题是,一旦对正在编辑ajaxCalculateTotalCost()Order实例进行了 ajax 调用,就会被保存。据我了解,Spring 或 Hibernate 在 HTTP 请求结束时刷新会话???

这是一个问题,就好像用户添加/删除items了无法通过单击Cancel表单底部来取消更改(Order发生 ajax 调用时已保存)。

谁能建议如何在不保存Order实例的情况下进行计算?

0 投票
3 回答
449 浏览

c# - 有什么反对让所有域对象都从 INotifyPropertyChanged 继承的吗?

我正在重构和重新设计在某种程度上使用MVVM的应用程序的域对象。是否有任何反对让所有域对象(POCO)继承自INotifyPropertyChanged的​​东西,所以任何人都可以按照自己的意愿观察对象。

结合https://stackoverflow.com/a/1316566/448357这甚至不必非常难看。

另一方面,用可能根本不需要的东西污染我的域对象怎么办,因为无论如何都会有一个单独的视图模型?Margabit 指出:UI 模型!= 领域模型