我正在开发一个我们将使用DDD的新项目。这里出现的问题是如何处理我认为外部API与一个实体本身非常相关的情况。
想象一下实体卡。每个用户都可以拥有一张卡片,类似于银行塑料卡片,并且需要创建,激活,充电等卡片。
此处的问题是此卡与管理卡创建,退款,激活等的外部API相关。
在没有考虑基础设施的代码方式中,我看到了这种方式。
new Card();
$card->isActive();
$card->refund();
等
但事实是,这个实体函数需要与真正创建所有操作的外部API联系。但对我来说,它看起来像基础设施,并且是域模型本身之外的东西。
从DDD的角度来看,这个实体是否能够连接到API并调用API内部是否正确?
使用能够做出以下任何一种做法的服务是否接近DDD
$service->activateCard($card);
那么$ card-> activate()方法会发生什么呢?这种方法在无处不在的语言中对我来说似乎很自然?
谢谢!
答案 0 :(得分:2)
想到域事件。您可以Card
发出包含关联数据的CardActivated
,CardRefunded
个事件。它们将由知道如何与外部API通信的基础结构服务处理,让您的域层很快就意识不到技术细节。