我有一个 gradle 多项目,其中有 2 个子项目试图模拟六边形架构:
- 休息适配器
- 应用层
我不希望应用程序服务公开域模型,也不希望强制将特定表示作为输出。所以我想要应用程序服务消耗 2 个参数(一个命令和something
)并返回一个T
. 客户端配置服务。
其余适配器无法访问域模型,因此我无法返回域模型并让适配器创建其表示。
怎么样something
。我试过 :
- 有签名
<T> List<T> myUseCase(Command c, Function<MyDomainModel, T> fn)
。应用层是转换函数的所有者(因为签名使用 MyDomainModel)并公开函数字典。所以其余控制器引用了 Fn 之一。有用。我正在寻找更好的方法。如果它存在,则更优雅的方式。 - 有一个签名
<T> List<T> myUseCase(Command c, FnEnum fn)
对于每个枚举我都关联了一个函数。有了这个,我发现签名更优雅:消费者从枚举中提供了它想要的转换。但不起作用,因为通用方法无法编译。无法解决。目前,我没有找到方法。 - 与 java 8 消费者或供应商或其他东西有关的东西,但我没能解决问题。
我觉得对于这类问题有一个更优雅的解决方案:接受一个函数的服务,该函数可以转换和构建客户端提供的输出。