gpt4 book ai didi

grails - 在 grails 域类中编写类方法的优缺点是什么?

转载 作者:行者123 更新时间:2023-12-02 13:57:31 25 4
gpt4 key购买 nike

在 grails 域类中编写类方法的优缺点是什么?我在问,因为我经常在域类中看不到任何带有方法的 grails 项目,只有数据成员。这样做有缺点吗?

最佳答案

当一个领域类(不仅在 grails 中,而且在一般的面向对象编程中)时,这被称为 anemic domain model . Martin Fowler 建议将域逻辑放入域类中以创建丰富的域模型。通过这样做,域类变得更智能并且知道如何执行操作,而不是让另一个服务类必须对域类进行操作。拥有丰富的领域模型的优点是类封装了更多自己的行为,并且更加自包含。另一方面,它确实使域类更加复杂。虽然我认为域类应该不仅仅是一个业务对象。

在 grails 中,我倾向于尝试结合使用丰富的域模型和使用服务。很难对方法何时应该在域类中以及何时应该在服务中做出笼统的陈述。不过,作为一般规则,如果一个操作很复杂并且需要多个协作者,我倾向于将它放在一个服务类中。如果该方法看起来应该是域类的行为,我会把它放在那里。

举一个更具体的例子,让我们以 Person类(class)。

class Person {
String firstName
String lastName
List<Person> friends
}

在我们的应用程序中,一个人可以说话。现在我可以拥有 TalkService那知道一个人如何说话。但在这种情况下,我认为 talk是人的核心行为,所以我要添加 talk方法 Person .

假设我也有功能,我想找到人的 friend 的所有 friend (二级 friend )。对我来说,这不是 Person 的核心行为。 ,所以我会将其委托(delegate)给服务。

回顾一下,一般来说,当域类是对象的核心行为(例如,它是域方法)时,我会将其添加到域类中,否则,我会将其放入服务中。

关于grails - 在 grails 域类中编写类方法的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14016728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com