【问题标题】:avoiding duplication with data objects避免重复数据对象
【发布时间】:2016-04-17 22:30:07
【问题描述】:

我们有一个服务,它可以产生几十种不同的响应 bean。它们被应用程序内的其他服务使用。还有一个 Web 服务公开了相同功能的一部分。它返回与内部响应 bean 几乎 1:1 对应的响应对象。当然它们并不相同:删除了一些字段,添加了 swagger 文档属性等。

重复使用相同的豆子感觉不可能,它们已经足够不同了,即使只是略有不同,将它们混合在一起感觉很糟糕,因为一个是内部的,另一个是暴露的。还有一个梦想是用现代微服务类型的方式开发它,其中组件是模块化和独立的。

不重用意味着复制每个响应对象,创建转换器,保持两者同步。

两种方式都很糟糕,我想不出什么好东西。

【问题讨论】:

    标签: java spring web-services architecture


    【解决方案1】:

    是的。

    我经常来这里。有一些工具可以使映射器更容易(bean-mappers 等等),但它们通常会引入更多的错误。我还看到/尝试过继承方案,让一个域对象从另一个继承......这通常会再次导致比它解决的问题更多的问题。

    事实证明,在 90% 的情况下,您对数据的内部和外部表示有不同的顾虑。映射层是将这些关注点分开的好地方。将它们结合起来总是会让我在路上走得更远。您的里程可能会有所不同,但我怀疑它会有所不同,除非您拥有最简单的应用程序,否则您将需要拥有单独的对象。

    这是无聊的代码,但它很简单,而且很容易测试。一旦你这样做了,你的封装就会提升,你可以让你的合约独立于你的内部实现而改变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-30
      • 2015-02-05
      • 2023-03-22
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多