gpt4 book ai didi

c# - 面向业务逻辑的 OO 设计

转载 作者:行者123 更新时间:2023-11-30 15:48:18 26 4
gpt4 key购买 nike

我有一个 Sell Operation 对象和两个 Buy Operation 对象,我想实现一个 Sell Operation 释放两个 Buy Operation 的行为,它看起来像:

sellOperation.Discharge(oneBuyOperation);sellOperation.Discharge(twoBuyOperation);


所以我想问一下是在Discharge方法中调用repository函数,还是在Discharge方法外调用repository save方法比较好。喜欢:

opRepository.Save(sellOpertion);

所以任何人都可以给我一些建议,您将在这种情况下实现什么?使用服务类或任何更好的方法?

最佳答案

保存不应该是业务逻辑的一部分 - 它消除了将大量操作包装在单个工作单元中的能力。

如果 twoBuyOperation 也可以解除,假设您只想解除 oneBuyOperation。如果任何一个失败,您都不希望任何一个被保留。

如果每次调用 Discharge 时它都通过 Save 方法保留 sellOperation,那么如果第二次失败,您将无法可靠地回滚更改。

using(UnitOfWork.Start())
{
sellOperation.Discharge(oneBuyOperation);
sellOperation.Discharge(twoBuyOperation);

UnitOfWork.CurrentSession.Save(sellOperation);
}

例如。

关于c# - 面向业务逻辑的 OO 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2742424/

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