我是grails的新手。我在当前项目的代码库中注意到的一件事是域类和控制器类共享相同的包。所以,你有这样的事情:
grails-app/controllers/foo/BarController.groovy
grails-app/domain/foo/Bar.groovy
那么,这是一种常见做法吗?这有什么利弊?非常感谢你。
答案 0 :(得分:4)
我认为对域对象和控制器使用相同的包是可以的。
有一种叫做Package by Feature的做法,它认为按照它们是什么类型的组件或它们所在的层来对类进行分组不如将有助于实现相同功能的事物分组在一起那样有效。当我处理由图层打包的项目时,我会做很多来回徘徊,按功能分组会减少这种情况。
通常,域对象对它们的私密性很小。无论如何,Groovy类中的隐私也是不存在的。
答案 1 :(得分:3)
这就是“约定”在Grails中对“配置”的作用。这是一种常见的做法。我没有找到以这种方式使用它的缺点。
通常,当您create-domain-class
或create-controller
时,甚至测试都会分别添加到与域类/控制器相同的包中。
我可以引用的最佳例子就是当你使用
时 grails generate-all yourPackage.Domain
偶然发现了与Grails有关的类似帖子,其中解释了Nathan提到的package by feature方面。希望有所帮助。