Groovy传递请求类之间的参数

时间:2014-12-13 15:24:32

标签: methods groovy parameters domain-driven-design

如果我想处理来自例如Web请求的许多参数并在类(层)之间传递它 - 首选方法是什么?

  • 我知道通过构造函数将可选数量的参数作为映射传递很容易。
  • 我也可以直接传递地图,如果键与接收对象的属性名称匹配,它应该以类似的方式工作
  • 或者我可以直接传递地图,然后实例化
  • 中的域类
  • 我可以使用特殊类作为具有给定数量属性的数据载体

我有一个需要来自用户界面的数据的域类(不是数据库域,而是业务域)。 通过图层传递数据的最佳方法是什么?如果使用具有键值的数据结构(如地图),如何知道所有必需的数据都被传递?如果我有一个具有给定数量参数的更静态构造函数,那么我会知道参数正在传递。但是,如何在使用更加动态的方法时确保这一点?单元测试?

1 个答案:

答案 0 :(得分:0)

Grails command objects是一个很好的选择。您可以将它们传递到各个层而不会出现问题。它们非常类似于域类,只是没有完整的持久性功能。

否则我建议使用普通的旧Groovy类(POGO)。 Groovy允许您保持代码非常短(与Java和许多其他语言相比),并为您可能需要的常见设计模式提供非常方便的transforms(例如CanonicalImmutableIndexedPropertyDelegatesTo ...)。

与命令对象相比,POGO确实需要您编写例如验证代码,但这可以像

一样简单
boolean isValid() {
    name && lastName && countryCode in ['US', 'CA']
}

您可以将静态工厂保留在POGO中,以帮助您在各种情况下构建它们。另外,您可以在文件中定义多个类,这样您就可以将POGO代码保留在最有意义的地方。我肯定更喜欢这种简单地图的方法,因为代码更好地封装,POGO可以进行单元测试和放大。记录。