我正在编写一个月支出申请,你在一个月中添加“支出”,这些支出包含了对支出和金额的描述。例如,你可能有2015年4月,其中有以下支出项目:
等等。
我编写了以下内容,从而允许您将项目添加到月份
class ExpenditureMonth
{
public function addExpenditureItem(String description, Money amount)
{
items.add(new ExpenditureItem(this, description, amount));
}
}因此,ExpenditureItem的对象创建发生在ExpenditureMonth中。一个支出月可以包含许多项目。
当帐户持有人已经支付了一个项目,它需要标记为已支付。
我将如何设置一个项目作为支付?
我唯一的想法是为一个ExpenditureItem设置一个标识符,并将这个实例传递给addExpenditureItem方法,但这对我来说似乎不对?!
发布于 2014-07-02 07:30:08
我以前也有过类似的question (请阅读答案)。
DDD中的,父根或聚合根的变化取决于有界上下文。因此,在您的示例中,这是您的上下文:
当帐户持有人已经支付了一个项目,它需要标记为已支付。
对于这个特定的上下文,支出项目现在是聚合根,现在它需要独立地标识ID。设置ID或GUID是普遍接受的解决方案,我不认为唯一地标识没有适当键的对象是可靠的。
但是,如果情况是“帐户持有人支付了他每月所有的未支付支出(或所有未支付的支出)”,那么对于这种情况,合计根是您的MonthlyExpenditure。
https://stackoverflow.com/questions/24516769
复制相似问题