【问题标题】:Domain Data Structures that hold Domain objects?包含域对象的域数据结构?
【发布时间】:2012-10-28 15:08:17
【问题描述】:

我有一个位置,以及一些使用位置作为标识符的实体(地理、生物群落等)。如果我想访问它们,我需要按位置检索每一个,这会导致重复代码。另一方面,我可以创建一个作为容器的类,例如“位置”。但是,在这种情况下,要检索地理(例如),我需要打破 demeter 定律。

Repository.getLocation().getGeography().getHighestPeak();

有没有其他方法可以解决这个问题,或者我缺少一个常见的模式?请记住,这种类型的对象(以我描述的方式与位置相关)很可能在几个月后大量增长。

【问题讨论】:

  • 你确定这个职位适合做ID吗?是否有确保一个实体只有一个职位的规则?
  • 看起来你的根聚合太大了。

标签: oop domain-driven-design encapsulation ddd-repositories law-of-demeter


【解决方案1】:

我不确定将职位作为 ID 是否是个好主意

  • 实体的位置可能发生变化,导致标识符不稳定。

  • 您不能在同一位置拥有给定实体的多个实例。

另一方面,我可以创建一个作为容器的类,例如 “地点”。但是,在这种情况下,为了检索地理(例如),我 需要打破得墨忒耳定律。

Repository.getLocation().getGeography().getHighestPeak();

您基本上是在说 Location 有一个实体,这有点尴尬。说一个实体有一个位置似乎更自然。怎么样

GeographyRepository.getGeographyByPosition(new Position(...)).getHighestPeak();

?

【讨论】:

  • 好吧,几何和生物群系的位置不会改变。不是城市等等。
猜你喜欢
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多