使用域对象或命令对象来封装视图

时间:2016-09-07 18:39:51

标签: grails

何时应该使用命令对象和域对象?

每种方案有哪些缺点和优点?

1 个答案:

答案 0 :(得分:2)

  

何时应该使用命令对象和域对象?

域对象是您要保留到数据库的对象。命令对象可能是域对象,但不必如此。任何对象都可以用作命令对象。命令对象是让框架为你做一堆工作的便捷方式(数据绑定,依赖注入,验证等......)。

当你编写这样的控制器动作时:

class SomeController {
    def someAction(SomeCommand co) {
        // your code here...
    }
}

编译器将生成类似这样的东西(伪代码,但代表性):

class SomeController {
    def someAction(SomeCommand co) {
        // your code here...
    }

    def someAction() {
        SomeCommand co = new SomeCommand()
        bindData co, request

        // subject co to dependency injection

        co.validate()
        someAction(co)
    }
}