gpt4 book ai didi

uml - 为域模型设计类图

转载 作者:行者123 更新时间:2023-12-01 23:07:13 26 4
gpt4 key购买 nike

首先,不要认为我正在尝试让其他人完成工作,但我正在尝试为域模型设计类图,而我所做的事情可能是错误的,因为我被卡住了,所以我只是想获得有关我没有正确执行的操作的提示以继续...

例如,用户需要从产品列表中按类别搜索产品。每个类别可能有子类别,子类别可能有子类别等。

我制作的第一个图表是这样的(简化): enter image description here

用户还需要获取至少有一个产品的目录树列表。例如,如果这是所有类别树:

  • 乐器
    • 字符串
      • 吉他
      • fiddle
    • 打击乐器
  • 书籍
    • 漫画
    • 小说
    • 浪漫

我无法返回至少有一个产品的类别树,因为我也会得到所有子类别,但不是每个子类别都有与之关联的产品。

我也无法从 Category.subCategories 集合中删除项目以仅保留具有关联产品的项目,因为这会改变可能在其他地方共享的类别实体,这不是我想要的。

我想做一个副本,但我会在同一上下文中获得同一实体的两个不同实例,这不是一件坏事吗?

所以我重新设计为: enter image description here

现在我没有得到我不想要的每个类别的子类别的集合,我只知道它的父类别,这没关系。

但是,这会创建一个只能从底部到顶部导航的类别树,对于始终需要顶部 -> 底部类别导航的 ProductList 客户端来说,这没有任何意义。

作为解决方案,我想到了下图,但我不确定它是否很好,因为它有点重复,而且 CategoryTreeItem 在领域语言中似乎没有太大意义。 enter image description here

我做错了什么?

最佳答案

这与其说是模型问题,不如说是算法问题。你的第一种方法完全没问题,除非你对约束保持沉默。因此,您可以为任何产品分配类别或子类别。如果您分配一个子类别,这意味着根据此模型,产品也将具有父类别。为清楚起见,我将附加一个约束条件,告知需要将产品分配给最知名的类别粒度。例如。吉他产品将分配给 Guitar 类别。像 Stick 这样更奇怪的乐器将获得 Strings 类别(这并不意味着它是吉他 fiddle ,而是属于更高的类别。

现在,当您将实现 Category 时,您可能会想到一种方法来返回 assignedInstruments() 的集合,对于 Guitar 将返回 FenderAlhambra 等。您可以扩充此 assignedInstruments(levelUp:BOOL) 以获得上述类别的乐器。

通常您必须清楚类别分配的基本含义。如果您更改分配,产品将最终出现在另一个列表中。

关于uml - 为域模型设计类图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35067559/

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