【发布时间】:2016-08-08 14:39:40
【问题描述】:
两个不同类的方法调用者和被调用者做循环类级别的不同方法调用有什么问题。您将“this”引用作为参数传递给其他一些类实例方法,并且被调用者对作为参数传递的调用者进行进一步的方法邀请。
这样做的一个原因是,在工厂类中,不同的实现需要不同类型的数据,因此您将所需的数据作为多个合约/接口方法并让您的调用者实现它们。如果你只有一个类,实现封装更容易,但是不同的类需要不同的数据集。
下面是一个简单的例子,这里 StudentService 调用 MathClassScorer 的 topscorer 方法,该方法又调用 StudentService 的 getStudentList 方法。在复杂的场景中,您可能会调用父调用者的多个方法。
public interface IStudentData {
public List<Student> getStudentList();
}
public class StudentService implements IStudentData {
private List<Student> studentList;
public String getTop() {
// Factory returns MathClassScorer
IScore scorer = ClassScorerFactory.get();
return scorer.topscorer(someOtherData, this);
}
@Override
public getStudentList() {
// do something and return studentList;
return studentList;
}
}
// IScore contains topscorer method
public class MathClassScorer implements IScore {
@Override
public String topscorer(Map someOtherData, IStudentData data) {
List<Student> studentList = data.getStudentList();
//do something before and after
return SOMETHING_AFTER
}
}
问题是,上述方法有问题吗?
【问题讨论】:
-
这样做没有问题。
-
问题是什么?
-
问题是,这种方法有什么问题吗?
标签: java oop interface polymorphism higher-order-functions