本来有public class Student {
private Set<Grade> grades;
public Set<Grade> getGrades() {
return grades;
}
}
public class Foo {
private List<Grade> grades;
public void add(Student student) {
Grade grade = new Grade(student, this);
grades.add(grade);
student.getGrades().add(grade);这样产生了封装泄漏
于是我把student的getter改成了
public Set<Enrolment> getEnrolments() {
return Collections.unmodifiableSet(enrolments);
}
那么Foo里面的add方法怎么改啊?怎么给学生添加成绩啊?
private Set<Grade> grades;
public Set<Grade> getGrades() {
return grades;
}
}
public class Foo {
private List<Grade> grades;
public void add(Student student) {
Grade grade = new Grade(student, this);
grades.add(grade);
student.getGrades().add(grade);这样产生了封装泄漏
于是我把student的getter改成了
public Set<Enrolment> getEnrolments() {
return Collections.unmodifiableSet(enrolments);
}
那么Foo里面的add方法怎么改啊?怎么给学生添加成绩啊?
return Collections.unmodifiableSet(grades);
}
public class Student {
private Set<Grade> grades;
//public Set<Grade> getGrades() {
//return grades;
//}
public void add(Grade grade) {grades.add(grade);}
}
public class Student {
private Set<Grade> grades;
public Set<Grade> getGrades() {
return Collections.unmodifiableSet(grades);
}
public void addGrade(Grade grade) {
grades.add(grade);
}
}
public class Foo {
private List<Grade> grades;
public void add(Student student) {
Grade grade = new Grade(student, this);
grades.add(grade);
student.addGrade(grade);
}
}