如何正确处理OOP中的多对多关系?

时间:2017-08-12 21:56:33

标签: java oop dictionary

我正在为一个学校项目构建一个Java应用程序,它需要一些数据才能有多对多的关系。基本上我目前有一个名为'技能'其中包含数据,如技能的简要说明。

public class Skill 
{
    private String name;
    private String description;
    private int maxLevel;

    public int getMaxLevel()
    {
        return maxLevel;
    }

    public String getName()
    {
        return name;
    }

}

我将其设为类的原因是,可以在GUI中创建和删除技能,而无需使用任何运行时类编辑。然后有一个学生班。每个学生都将所有技能都映射到一个整数值,该值表示他们在此技能中的等级。

public class Student
{
    private String studentName;
    private HashMap<Skill, Integer> skillMap;

    public void levelUp(Skill skillToLevel)
    {
        int oldValue = skillMap.get(skillToLevel);
        skillMap.remove(skillToLevel);
        skillMap.put(skillToLevel, ++oldValue);
    }

}

这两个类都是Serializable,并且在开始时加载到程序中并在最后再次保存。基本上,我想知道这是否是最好的方式,对我来说,这似乎是凌乱的,有点草率。我最近一直在研究一些设计模式但又一次,我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我认为在涉及manyToMany关系时正确的做事方式是创建一个关联类,在这种情况下,您可以创建一个第三类student_skill,您可以在其中放置有关学生及其技能的方法和属性。 我还认为你应该养成在课堂上使用唯一ID的习惯,使用名称作为ID并不是最佳选择。