所以我想创建 3 个插件,其中包括域类和一个 Restful 服务,并且每个插件都构建在彼此之上。
从概念上讲,他们会这样“继承”基本模型:
记录>人员>用户
但是我从友好手册中读到继承可能会导致一些性能问题。
然后我想到,由于 Groovy 具有水平重用功能(即特征),我很可能只定义特征中的所有内容,然后在域类中实现特征。
由于字段的重命名,组合域类对我来说不是一个选择,而且还失去了 IDE 自动完成的便利性。
我的两个问题是:
- 最好将这些特征放置在 Grails 项目结构的哪个部分。
- 这会导致不同的问题吗?
最佳答案
Trait 源代码应位于
- Grails 2:src/groovy/[package][whatever.groovy]
- Grails 3:src/main/groovy/[package][whatever.groovy]
例如:src/main/groovy/com/my/package/foo.groovy
您将遇到的主要问题是您将失去执行多态查询的能力。例如,通过继承,您可以执行以下操作:
def everything = Record.list()
和everything
将包含Record
、Person
和User
实例。有点像 SQL 联合查询。当使用 Traits 而不是继承时,您会失去这种能力。
关于grails - 在 Grails 中使用特征进行水平域类重用,是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34918306/