有效地设计类之间的关系

时间:2012-02-09 15:57:18

标签: java design-patterns mongodb one-to-many bidirectional

我想知道是否可以改进类之间的以下关系模型。我使用MongoDB作为数据库层。

public class TodoItem {
 private String description;
 private Person person;
}

public class Person {
 private List<TodoItem> items;
}

我的问题再次针对的是类的设计,其中包括像One-to-Many和Bi-Direction这样的关系。感谢。

3 个答案:

答案 0 :(得分:3)

这实际上取决于您的要求/环境。

e.g。你有双向依赖。他们很难维护,但对于使用它的客户来说很好。更重要的是什么?你真的需要或多或少地同时导航两种方式吗?

存储完整对象。也许你应该存储代理,或者存储id和存储库。在我们了解您的功能和非功能需求之前,没有人能说出来。

实际上,如果您没有要求,那么设计是错误的,因为如果它没有帮助满足要求,您就不应该有一个类。

软件设计没有绝对的对错。如果这样的决定是可能的,我们就不需要手动制作,它可以作为每种现代语言的语言功能。设计是关于理解要求和理解设计决策对这些要求的满足程度的影响。

因此,如果您想了解设计,请尝试以下方法:

采用简单的功能要求,并考虑设计如何随着非功能需求的变化而变化:它必须在芯片卡上运行;它必须每秒处理数千个请求。写得很多,很少读;很多读,很少写。 ...

答案 1 :(得分:1)

你真的需要双向协会吗?例如,部门是否必须知道它属于哪个公司?

使用单向关联可以减少耦合,Department无需了解Company(或Company更改时的更改)。同样适用于ProjectEmployee,...

没有更多的信息,这就是我所看到的。

答案 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;
}