我有一些中间件代码,从外部API获取产品列表。我正在对响应进行建模,并将该响应返回给我的代码的客户。
我代码的任何客户都不关心返回的单个产品的细节:他们只想收集产品。
如何使用DDD建模?
每个产品属性都有一个值对象,一个产品一个实体和一个包含所有产品的存储库?
为什么不使用cqrs(https://learn.microsoft.com/en-us/azure/azure/architecture/patterns/cqrs(。
将模型分为读取模型。在您的情况下,读取模型会做到。使他们成为Pocos。在读取方面,我们不需要使用DDD战术建模工具。
有关更多信息,请访问我提供的链接。
我认为您快到了,您的中间件(外部API(可以通过找到方法和返回产品模型来是存储库。
建议将存储库成为一个接口(例如生产者(,以使代码更具测试。您可以对测试(例如生产培训testimpl(和中间件通信的主要实现(例如productrepostioryimpl(。
进行简单实现。对于包装,我更喜欢以下内容:
domain
model
product
|Product
|ProductRepository
infrastructure
persistence
YOUR_EXTERNAL_API_NAME
|ProductRepositoryImp
eclipselink
...
test
...
|ProductRepositoryTestImpl
您应该像external bounded context
一样看到外部API。您的local bounded context
将使用将术语从远程限制的上下文转换为本地上下文的anti-corruption layer
。因此,您的代码实际上是anti-corruption layer
。
现在,您是否应该将这些产品持续为entities
或value objects
?这取决于您的本地用法。您是否修改这些产品。如果您不修改它们,则它们是Value objects
。
在任何情况下,您都可能必须使用repository
来持久/重新推荐产品。