以DDD方式与实体相关的外部第三方API

时间:2015-08-04 08:48:44

标签: php entity domain-driven-design

我正在开发一个我们将使用DDD的新项目。这里出现的问题是如何处理我认为外部API与一个实体本身非常相关的情况。

想象一下实体卡。每个用户都可以拥有一张卡片,类似于银行塑料卡片,并且需要创建,激活,充电等卡片。

此处的问题是此卡与管理卡创建,退款,激活等的外部API相关。

在没有考虑基础设施的代码方式中,我看到了这种方式。

new Card();
$card->isActive();
$card->refund();

但事实是,这个实体函数需要与真正创建所有操作的外部API联系。但对我来说,它看起来像基础设施,并且是域模型本身之外的东西。

从DDD的角度来看,这个实体是否能够连接到API并调用API内部是否正确?

使用能够做出以下任何一种做法的服务是否接近DDD

$service->activateCard($card);

那么$ card-> activate()方法会发生什么呢?这种方法在无处不在的语言中对我来说似乎很自然?

谢谢!

1 个答案:

答案 0 :(得分:2)

想到域事件。您可以Card发出包含关联数据的CardActivatedCardRefunded个事件。它们将由知道如何与外部API通信的基础结构服务处理,让您的域层很快就意识不到技术细节。