我想知道是否可以改进类之间的以下关系模型。我使用MongoDB作为数据库层。
public class TodoItem {
private String description;
private Person person;
}
public class Person {
private List<TodoItem> items;
}
我的问题再次针对的是类的设计,其中包括像One-to-Many和Bi-Direction这样的关系。感谢。
答案 0 :(得分:3)
这实际上取决于您的要求/环境。
e.g。你有双向依赖。他们很难维护,但对于使用它的客户来说很好。更重要的是什么?你真的需要或多或少地同时导航两种方式吗?
存储完整对象。也许你应该存储代理,或者存储id和存储库。在我们了解您的功能和非功能需求之前,没有人能说出来。
实际上,如果您没有要求,那么设计是错误的,因为如果它没有帮助满足要求,您就不应该有一个类。
软件设计没有绝对的对错。如果这样的决定是可能的,我们就不需要手动制作,它可以作为每种现代语言的语言功能。设计是关于理解要求和理解设计决策对这些要求的满足程度的影响。
因此,如果您想了解设计,请尝试以下方法:
采用简单的功能要求,并考虑设计如何随着非功能需求的变化而变化:它必须在芯片卡上运行;它必须每秒处理数千个请求。写得很多,很少读;很多读,很少写。 ...
答案 1 :(得分:1)
你真的需要双向协会吗?例如,部门是否必须知道它属于哪个公司?
使用单向关联可以减少耦合,Department
无需了解Company
(或Company
更改时的更改)。同样适用于Project
,Employee
,...
没有更多的信息,这就是我所看到的。
答案 2 :(得分:0)
简单的答案是
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;
}