问题标签 [repository-design]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
268 浏览

domain-driven-design - DDD:需要获取数据作为其业务规则一部分的域服务的问题

假设我有一个实现以下业务规则/策略的域服务:

如果“家庭”类所有产品的总价超过100万,则对超过一年的家庭产品降价50%。

使用基于集合的存储库

我可以简单地创建一个域服务,它使用规范模式加载“家庭”类别中的所有产品,然后检查条件,如果为真,降低价格。由于产品由基于集合的存储库自动跟踪,因此域服务根本不需要发出任何显式的基础架构调用——这是应该的。

使用基于持久性的存储库

我运气不好。我可能会使用存储库和规范将产品加载到我的域服务中(如前所述),但最终,我需要发出Save不属于域层的调用。

我可以在应用层加载产品,然后将它们传递给域服务,最后在应用层中再次保存它们,如下所示:

但是,我看到此代码存在以下问题:

  • 加载正确的产品现在是应用层的一部分,所以如果我需要在其他用例中再次应用相同的策略,我需要重复自己。
  • 规格FamilyProductsSpecification(请注意,在域服务中再次过滤产品(内存中)也无济于事,因为调用者可能只传递了所有产品的一个子集。
  • 应用层不知道哪些产品发生了变化,因此被迫全部保存,这可能是很多多余的工作。

问:有没有更好的策略来处理这种情况?

我想到了一些复杂的事情,例如调整基于持久性的存储库,使其在域服务中显示为基于集合的存储库,在内部跟踪由域服务加载的产品,以便在域服务时再次保存它们返回。

0 投票
0 回答
99 浏览

git - 如何从 GitHub 模板导入更改?

感谢您阅读我的问题。

我使用 GitHub 的模板功能从公开可用的模板生成存储库。
模板仓库有develop分支和stable分支,我只使用并生成了stable分支。

我对生成的存储库进行了数十次提交。有一天,模板存储库的稳定分支被更新以修复一个严重漏洞。
我试图合并这些更改,因为该漏洞在很大程度上是我生成的存储库的一部分。

问题来了:当 GitHub 从模板存储库生成存储库时,它会将模板更改合并为单个提交,并以我的名义将其提交为 Initial commit。
从模板存储库导入更改的最佳方式是什么?

  1. 添加template到 git 远程并合并模板更改。
  2. 添加template到 git 远程并创建一个模板分支,并在每次更改模板时进行挑选。
  3. 手动重写更改的文件并使用我的签名提交。
  4. 不要使用模板功能。以叉子的形式使用它。

方法一造成了严重的冲突,无法正常工作。
方法 2 冲突最小,是我的想法中最好的方法。

我正在使用翻译,所以如果您有任何问题,请发表评论,我会尽力回答。如果您有任何问题或意见,请给我评论。

谢谢你。