即使认为here有一个很好的答案,但解释仍然让我有点困惑。
我没有看到反腐败层和适配器之间有任何巨大差异,我看到的唯一区别是定义上的差异,反腐败层是一种包装器,允许您将您的域与其他人的域的损坏隔离开来域名。
但是在另一篇文章中,反腐败层通常充当适配器。
举个例子。我有一个库,允许我从代码中查询 MongoDB,该库是由官方 MongoDB 开发人员为我的编程语言开发的。我还有一个用户域模型(让我们将其命名为
User
)。 User 有一个唯一的 UserID,它必须与 MongoDB 中的 ID 匹配。 MongoDB 库使用 primitive.ObjectID
类型作为标识符。因为我不想从域模型引用数据库的类型,所以我创建了一个单独的类型 Identifier
,它实际上是一个常规字符串。因此,在域模型中,UserID 将是 Identifier
类型,并且 primitive.ObjectID
本身将在映射期间通过转换为字符串而转换为 Identifier
。
问题:这样的话,
Identifier
是反腐层吗?您有什么例子可以最准确地向我展示反腐败层和适配器模式之间的区别吗?
如您所见,流程完全相同。你可以这样想组件:
因为这些组件往往一起使用,所以有时所有这些组件都会被整合到一个组件中,并且通常将其命名为(badly)适配器。恕我直言,拥有更小、更集中的组件是更好的方法。