gpt4 book ai didi

java - 我应该如何在java中将域 View 与域模型本身分开?

转载 作者:行者123 更新时间:2023-12-02 01:54:14 26 4
gpt4 key购买 nike

如何将域模型的查看方式(或者是否查看)与 View 本身的实现解耦。作为示例,请考虑以下代码:

public class Student
{
private Set<Course> enrollment;
public void enroll(Course c){
// domain implementation
}
public void unenroll(Course c) {
// domain implementation
}

}

这是一个非常简单的例子,但它可以满足我的要求。确保该对象的 View 与实际域功能分离的好方法是什么?例如,该学生应该能够用 XML、JSON 甚至某种游戏来表示,或者没有任何类型的 View 。

我想到的一些方法可能是这样的:

@XmlRootElement(name="student")
public class StudentXmlView implements XmlView<Student> {

@XmlElement(name="enrollment")
private XmlVeiw<Set<Course>> enrollmentView;
}

这种方法是否合适,或者是否有一些通常在 Java 中用于将域与其 View 分离的最佳实践?

最佳答案

CQRS 架构非常适合这种分离:它将写入模型(DDD 中的聚合)与读取模型分开。

写入模型是专门为保护有关状态更改的业务不变量而设计的。它执行命令。无法查询。

读取模型旨在快速且适合特定用例。每个用例都有其他读取模型。在这里您可以使用最适合的任何技术。

写入和读取模型之间不存在相等性。您可以有 3 个写入模型和 1 个读取模型,或任意组合。

在微服务架构中,每个模型(写入或读取)都可以是一个微服务。

CQRS 之后的下一件事是事件溯源。

关于java - 我应该如何在java中将域 View 与域模型本身分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52539988/

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