我有这个问题,我还没有得出明确的结论,而且对此事似乎存在意见分歧,所以我想知道你的观点和原因,我想知道什么是“正确”的方法是或至少能够根据您的意见得出我自己的结论。
端口是应用程序层和适配器层之间的接口。 您可以在应用程序层中定义它们,但不能在域层中定义它们。
Alistair Cockburns 的正式描述(从 2006 年开始,参见 https://wiki.c2.com/?PortsAndAdaptersArchitecture 和 https://wiki.c2.com/?HexagonalArchitecture)是基于文本的,并且以相当对话的语气编写。 不幸的是,Cockburn 引用的图表已不再与发布的文本一起使用。
Cockburn 确实明确命名了架构风格的各个部分,并强烈暗示了各层的正式名称,但并没有超出“外部”、“变压器”(又名“适配器”)、“应用程序”、“域”之外的范围。 将内层 2 称为“应用层”和“域层”似乎也不是没有道理。
在六角形帖子中他明确写道:
OUTSIDE <-> transformer <--> ( application <-> domain )
他后来(在重命名为端口和适配器时)明确谈到“更改该绘图以显示‘适配器’而不是‘变压器’”,因此我们可以合理地将第三层称为“适配器层”。
OUTSIDE <-> Adaptor <--> ( application <-> domain )
我的猜测是,作为一个图表 - 想想如何经常描述清洁 - 你会得到这样的东西: