在相同类别的特定实例之间共享数据

时间:2019-02-20 16:07:24

标签: java spring spring-boot

我有以下问题。假设我们有两个类Assignment的实例。 每个实例都有一个开始日期和一个结束日期。当第一个任务结束时,第二个任务开始。现在我在第一个作业中有了一些信息,当第一个作业过期时,第二个作业中也需要这些信息。

对于这两个实例,我都需要像静态变量这样的东西,但对于整个类,则不是静态的。

最好的方法是什么?

谢谢

Matthias

=============== EDIT ==============

我认为我的问题不够具体。 我知道如何将数据从一个复制到另一个,但这在这种情况下不合适。

我的任务是解决员工与项目之间的链接,以解决n:n关系。但是一位员工可能对同一个项目有多个任务,因此我需要对所有任务都非常重要的信息。

如果我更新了分配1中的信息,则应该在将员工连接到该特定项目的所有其他分配中进行更新。 出于性能方面的考虑,我宁愿在一个中心位置进行更改,而不要手动复制信息。

=============== EDIT ==============

我考虑了这个问题,并且我认为如果每个作业都拥有对信息的引用,我的问题就可以解决。这样,其中一项分配的更改应自动分配给其他分配。

=============== EDIT ==============

Abaddon666的答案和注解是正确的,剩下的问题是如何以适当的方式共享对所有作业实例的引用。我们以这种方式解决了该问题,即我们在数据库中使用一个表,在该表中,我们使用两个外键存储信息,并在需要时为员工和特定项目加载信息。我会接受Abaddon666的答案,但也许有比当前解决方案更好的解决方案。

1 个答案:

答案 0 :(得分:1)

您要实现的目标是基本的Composition。 您希望1到x个特定类型的实例共享相同的值。这可以通过创建一个为共享信息建模的类并将其作为字段添加到您的作业中来实现:

public class Assignment{
    private Date startDate;
    private Date endDate;
    private Information information;

    public Assignment(Information information){
         this.information = information
    }

    public Information getInformation(){
         return this.information
    }
...
}

...

Information sharedInformation = new Information();
Assignment assignment1 = new Assignment(sharedInformation);
Assignment assignment2 = new Assignment(sharedInformation);