我想知道是否可以改进类之间的以下关系模型。我使用 MongoDB 作为数据库层。
public class TodoItem {
private String description;
private Person person;
}
public class Person {
private List<TodoItem> items;
}
我的问题再次针对涉及一对多和双向等关系的类的设计。谢谢。
我想知道是否可以改进类之间的以下关系模型。我使用 MongoDB 作为数据库层。
public class TodoItem {
private String description;
private Person person;
}
public class Person {
private List<TodoItem> items;
}
我的问题再次针对涉及一对多和双向等关系的类的设计。谢谢。
这实际上取决于您的要求/环境。
例如,您有双向依赖关系。它们有些难以维护,但对使用它的客户来说很好。什么更重要?您是否真的需要或多或少地平等地导航两种方式?
您存储完整的对象。也许您应该存储代理或 id 和存储库。在我们了解您的功能和非功能性要求之前,没有人能说出来。
实际上,如果您没有要求,那么设计就是错误的,因为如果课程无助于满足要求,则不应开设课程。
软件设计没有绝对的对与错。如果这样的决定是可能的,我们就不需要手动做出决定,它将作为每种现代语言的语言特性提供。设计是关于理解需求和理解设计决策对满足这些需求的程度的影响。
因此,如果您想了解设计,请尝试以下方法:
以简单的功能需求为例,想想你的设计如何随着非功能需求的变化而变化:它必须在芯片卡上运行;它必须每秒处理数千个请求。大量写入,少量读取;读多,写少。...
你真的需要双向关联吗?例如,部门是否必须知道它属于哪个公司?
使用单向关联,您可以减少耦合,Department
无需了解任何相关信息Company
(或更改,如果Company
更改)。Project
, Employee
, ...也一样
没有更多信息,这就是我所看到的。
简单的答案是
public class Company {
private List<Department> departments;
}
public class Department {
private List<Employee> employees;
private List<Project> projects;
private Map<Employee, Project> employeeProject;
}
public class Employee {
private String name;
}