1

我在我的域层中有一个名为 Product 的实体。

class Product{
    String barcode;
    String name;
    String barcode;
    double price;
    int amount;
} 

我的 UI 有一个产品列表,当我触摸条形码扫描仪按钮时,相机会读取条形码并增加 UI 产品列表中的产品。如果列表中没有具有相同条形码的产品,则应用程序将添加该新产品,但如果存在具有相同条形码的某些产品,则应用程序将增加该产品的数量。

我应该在哪一层添加这条规则?我应该在 UseCase 中进行此验证吗?还是在 Presenter 中?因为我可以有 2 个用例:

  • 第一个将需要条形码,并将返回具有相同条形码的产品。
  • 第二个将期望一个产品,并将增加产品数量并返回自身。

我可以使用 Presenter 来验证列表中是否有一些具有相同条形码的产品,如果有,Presenter 将调用第二个 UseCase 来增加产品数量。否则,Presenter 将调用第一个 UseCase 以返回一个新产品,然后 Presenter 将添加到 List。

或者我应该在 UseCase 中进行所有验证吗?我的意思是,Presenter 总是只会调用一个 UseCase,它会增加 Product 并期望所有 List 并返回所有 List。

所以我的 UseCase 将验证作为参数传递的列表,如果产品存在于列表中,则用例将递增并返回列表,如果产品不存在,则用例将返回带有新产品的列表。

我知道 UseCase 应该有所有的业务规则,并且这个规则“如果它不存在就添加一个产品,如果它存在就增加它的数量”它就像一个业务规则。但我不知道如何让 UseCase 使用此规则。

4

1 回答 1

0

您似乎有 2 个用例:

  1. addScannedProduct

    addScannedProduct用例需要访问通过条形码返回产品的存储库。

  2. 添加产品

    addProduct用例通过存储库中的产品 ID 检索产品。

通常您还会有 2 个控制器来处理不同的用户交互。

  1. 一个监听扫描仪结果或被扫描仪触发的控制器。该控制器调用addScannedProduct用例。
  2. 一个控制器,监听或由按钮按下或任何其他类型的用户交互触发。该控制器调用addProduct用例。

是否在演示者中合并产品列表?

问题是“规则是 UI 相关的还是 UI 不可知的”。. 所以问问自己“是否应该合并另一个 UI 中的产品列表”

我想产品列表应该独立于演示文稿进行整合。因此,我会将这种整合放在用例中。

于 2022-01-25T07:42:20.597 回答