端口和适配器——接口是否应该将参数指定为域对象?

Ports and Adapters – Should interfaces specify arguments as domain objects?

指定端口时,该接口是否应该根据域对象定义它的参数,例如

interface AddUser {
  firstName: FirstName
  lastName: LastName
}

和简单或“普通”类型,例如

interface AddUser {
  firstName: string
  lastName: string
}

我的第一个想法是,将它们定义为领域对象意味着如果领域模型发生变化,实施适配器将不得不改变。但是实现适配器必须更改 不管 接口的参数是如何定义的,即使参数是“普通类型”,不是吗?使用“普通类型”仅意味着我必须将传入的参数解析为域类型。

但是,使用域类型意味着当我将数据传递到端口时,我知道数据的格式是正确的。它也没有违反依赖应该向内的想法。

端口和适配器没有说明如何定义API。是否希望应用程序向外界公开域对象取决于您。