区分对象而不在类中明确说明它们

时间:2017-12-19 14:48:18

标签: java

 /**
     * Add a student to this school.
     * @param student The student to be added.
     */
    public void addStudent(Member student)
    {   
        students.add(student);
    }


 public void setTeacher(Member teacher)
    {
        this.teacher = teacher;
    }

我有两个名为student和teacher的成员子类。我不希望用户能够将教师添加到学生列表中,或者将学生设置为教师。有没有办法在不使用instanceof的情况下执行此操作?哈哈,我只是不喜欢我的班级图表看起来像什么。

这是顺便做作业。我想我已经完成了所有这些,但只是想知道是否有一个简单的解决方案。我只想避免在本课程中明确说明学生或教师。

1 个答案:

答案 0 :(得分:1)

一个解决方案是使用GetClass()方法或Visitor Pattern

但是如果你想避免这种情况,为什么你在第一时间使用Polymorphism呢?在教师或学生的方法实例中用作强类型。

public void setTeacher(Teacher teacher)
    {
        this.teacher = teacher;
    }