gpt4 book ai didi

java - 将领域模型与表示分离

转载 作者:行者123 更新时间:2023-11-30 03:00:04 25 4
gpt4 key购买 nike

在过去的几周里,我读了很多有关 DDD 和架构的内容,我得出的结论是我当前的项目真的很困惑。该应用程序(网络应用程序)显示租用汽车的实时位置(每 2 秒更新一次),它们的位置来自遗留代码(后台服务从多个来源获取数据并以某种格式将其放入数据库)目前无法更改,我们的应用程序从数据库获取数据,将其转换为不同的格式 - 适合我们的 map 基础设施(当前为 ESRI)的格式并将其存储回数据库中,以便所有用户都可以获得尽快获取数据。

我的问题是我们的领域模型(汽车、火车......)与演示文稿实现混合在一起,例如我们的汽车类看起来像

@Entity
class Car {
long id;
@Ref long manufacturerId
@Ref String customerId;
ESRIJson currLocation; (pretension related)
  • 我们的数据库是 mongoDB,因此该位置保存为子文档

如何将我的汽车模型与演示实现分开,因为现在我们使用 ESRI,明天我们可能会使用其他东西,但是必须考虑它是实时的事实,因为我无法在每个请求的格式,这是一个非常繁重的过程。

最佳答案

看一下 CQRS,它解释了您可能想要将一个对象(在您的例子中是汽车)拆分为两个。一个用于写入(这实际上是您的领域模型所在的位置),另一个用于读取。读取端的模型针对读取进行了更优化,并且在读取模型中包含特定于演示的数据是完全可以的。您甚至可以拥有多个读取模型,针对不同目的进行优化。

此外,您想要做的是“隔离棕色”,您将遗留系统作为单独的有界上下文来处理。您从旧数据库中读取数据(我想知道您是否能找到更好的方法来做到这一点),正在对您自己的 BC 使用某种反腐败层。这是 DDD 中一个很好且众所周知的模式。

关于java - 将领域模型与表示分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36234438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com