如果我想处理来自例如Web请求的许多参数并在类(层)之间传递它 - 首选方法是什么?
我有一个需要来自用户界面的数据的域类(不是数据库域,而是业务域)。 通过图层传递数据的最佳方法是什么?如果使用具有键值的数据结构(如地图),如何知道所有必需的数据都被传递?如果我有一个具有给定数量参数的更静态构造函数,那么我会知道参数正在传递。但是,如何在使用更加动态的方法时确保这一点?单元测试?
答案 0 :(得分:0)
Grails command objects是一个很好的选择。您可以将它们传递到各个层而不会出现问题。它们非常类似于域类,只是没有完整的持久性功能。
否则我建议使用普通的旧Groovy类(POGO)。 Groovy允许您保持代码非常短(与Java和许多其他语言相比),并为您可能需要的常见设计模式提供非常方便的transforms(例如Canonical
,Immutable
, IndexedProperty
,DelegatesTo
...)。
与命令对象相比,POGO确实需要您编写例如验证代码,但这可以像
一样简单boolean isValid() {
name && lastName && countryCode in ['US', 'CA']
}
您可以将静态工厂保留在POGO中,以帮助您在各种情况下构建它们。另外,您可以在文件中定义多个类,这样您就可以将POGO代码保留在最有意义的地方。我肯定更喜欢这种简单地图的方法,因为代码更好地封装,POGO可以进行单元测试和放大。记录。