Methods Groovy类间传递请求参数

Methods Groovy类间传递请求参数,methods,groovy,parameters,domain-driven-design,Methods,Groovy,Parameters,Domain Driven Design,如果我想处理来自例如web请求的许多参数,并在类和层之间传递它,那么首选的方法是什么 我知道通过构造函数作为映射传递可选数量的参数是很容易的。 我还可以直接传递贴图,如果键与接收对象属性名称匹配,它应该以类似的方式工作 或者我可以传递映射,然后从中实例化例如域类 我可以使用一个特殊类作为具有给定数量属性的数据载体 我有一个域类,不是数据库域,而是需要来自用户界面的数据的业务域。 通过层传递数据的最佳方式是什么?如果使用具有键值的数据结构(如地图),我如何知道正在传递所有必需的数据?如果我有一个具

如果我想处理来自例如web请求的许多参数,并在类和层之间传递它,那么首选的方法是什么

我知道通过构造函数作为映射传递可选数量的参数是很容易的。 我还可以直接传递贴图,如果键与接收对象属性名称匹配,它应该以类似的方式工作 或者我可以传递映射,然后从中实例化例如域类 我可以使用一个特殊类作为具有给定数量属性的数据载体 我有一个域类,不是数据库域,而是需要来自用户界面的数据的业务域。 通过层传递数据的最佳方式是什么?如果使用具有键值的数据结构(如地图),我如何知道正在传递所有必需的数据?如果我有一个具有给定数量参数的更静态的构造函数,那么我就会知道这些参数正在被传递。但在使用更动态的方法时,如何确保这一点?使用单元测试?

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

否则,我建议使用普通的Groovy类POGO。Groovy使您的代码比Java和许多其他语言都要短,并为您可能需要的常见设计模式提供了非常方便的功能,例如规范、不可变、IndexedProperty、DelegatesTo

与命令对象相比,POGO确实要求您自己编写验证代码,但这可以简单到

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

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

您是在使用Grails,其他一些Groovy库/产品/框架,还是这是一个一般性的问题?我经常在Grails中使用Groovy,是的。但这也是一个一般性问题。在Java中,我可以使用需要某些参数的静态构造函数。或者我可以用一个建筑工人。但是在Groovy中,什么是最好的代码风格?如果我想在类和层之间传输数据,我应该为我的类(可以用属性动态实例化)设置所有必需的属性,并通过调用类的单元测试验证这一点,还是有一些最佳实践?我正在尝试某种域驱动设计,将域逻辑与表示和持久性分离,并希望从web请求或其他请求中获取数据,并将其传输到我的用例和域对象。非常感谢!我将研究这两个选项,看看什么是对我来说最好的选择。命令对象看起来确实很有趣。谢谢命令对象非常通用,这是一篇关于它们的有趣文章,也是一篇关于BindUsing注释和命令对象的邮件列表,非常方便。谢谢Gregor。当我想到它时,我真正想做的是拥有一个独立于web框架和数据库的核心应用程序。我只想将客户端请求数据传输到核心域。因此,可能POGO和验证是一个更好的选择……并且还具有单元测试来验证调用类是否传递了正确的参数。但是我还没有读过你的链接,所以我会先读一下:再次感谢你分享这篇文章。你链接的例子与我的案例非常相似,但我不想依靠Grails来实现。我有一个只有一个方法的类,我想验证这个类是否接收到所有必需的参数。所以也许我应该实现我自己的验证方法,从该方法调用。