gpt4 book ai didi

java - 如何构建动态域模型 Java Web 应用程序

转载 作者:行者123 更新时间:2023-12-01 09:24:10 24 4
gpt4 key购买 nike

域模型是

Activity (娱乐、体育、测验)有很多 问题(娱乐问题、体育、测验相关问题)。

问题有多个解决方案(每个团队上传一个解决方案),解决方案有多个评分(每个评委发布评分)。

最初的目标是从一种类型的 Activity (例如测验 Activity )开始,它有多个问题和解决方案。法官可以对解决方案进行评分。

将来可能会出现具有不同属性和行为的新型事件(Spots 事件)。对于体育赛事,问题可能有一组新的属性和行为,并且应禁用解决方案模块,因为对于体育赛事,裁判可以直接更新成绩。

那么我是否需要为每个事件制定工作流程,以打开和关闭特定模块。

想要使用 spring boot 和 mongodb 来做微服务。

到目前为止我做了什么

我有

事件、问题、解决方案和成绩的抽象类(根据事件类型,评分属性可能会发生变化)。

以团队、问题和解决方案作为引用属性的注册域。

如何进一步进行?我现在正在做吗?

最佳答案

我认为您可以从对可扩展设计进行建模开始。在我看来,出发点是正确的,因为你必须区分事件、问题、解决方案、团队和法官。

完成此操作后,我总是尝试使事物尽可能通用,因此当我开始混合所有部分时,它们可以独立于其真实状态进行交互。也就是说,我尝试仅通过使用它们的接口(interface)/抽象类(一个问题 -> 许多解决方案,一个团队 -> 一个解决方案等)来进行各个部分之间的交互。我没有看到有关您谈论的这些属性的信息,但我认为它们可以属于通用问题,并且只需在每个特定类型的问题上进行配置(但未声明)。

如果您能够实现此目的,则可以创建类型(乐趣、体育、测验、景点)的枚举,以便您可以通过问题类型关系配置每种类型的问题。

我不知道如何表示问题,因为我没有足够的有关您的域的信息。但我会做的是这样的,所以当将来出现新类型的问题时我只需要创建一个新的类型枚举值及其关系:

quick design

理解它只是为了让你更容易理解我的话的一个例子,它与真正的设计相去甚远,因为我对拼图上的每一 block 都没有足够的信息。

尽管如此,以此为起点,您可以选择应用一些有趣的设计模式,例如 Abstract Factory (如果您想提供解决方案作为给定问题的模板,那么团队必须填写它而不是从头开始创建它)或 Strategy Pattern (因此您可以以相同的方式与每个问题进行交互,并根据问题类型或确定问题状态的任何其他变量来控制行为)。

总结:

  1. 尝试提取每个部分的共同因素以及它如何与其他部分相互作用。
  2. 此外,尝试独立于特定类型和属性进行交互,在通用接口(interface)中尽可能多地公开(显然,只要有意义)。
  3. 如果不可能,抽象工厂是一个选项,因此它可以让内部关系了解实现细节,而无需耦合外部部分。

一旦您这样做了,您将离创建一个动态模型更近了一步,该模型无需任何努力即可满足您的需求。

关于java - 如何构建动态域模型 Java Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39971607/

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