【发布时间】:2015-01-31 20:15:18
【问题描述】:
这是一个关于将对象传递到不同库或项目的最佳实践的问题。
假设我们有一个名为 Student and Grades 的课程。
import Grades;
public class Student (){
String StudentName;
String StudentID;
int age;
int gradeForMath;
int gradeForScience;
Grades otherGrades;
}
现在在我们的主要课程中,我想将 Grades 课程和一些 Integers 传递到一个库中,以计算学生明年通过的可能性。
public static void main (){
MyExternalLibraryCalculatingPassRate passRate = new MyExternalLibraryCalculatingPassRate(Grades otherGrades, int math, int science);
}
但是,我的问题是 Library 对 Grades 没有可见性,也没有一个名为 Grades 的类。我的问题真的是,这样做的最佳方法是什么?我有以下两个想法,但我不确定是否有更好或更坏的方法 -
传递 Grades 的底层数据结构。例如,如果我们可以将成绩归结为哈希图或数组列表,或者通过什么来传递?
在库中创建一个 Grades 类并将其导入到您的项目中,然后在您的项目中使用库中的 Grades 类而不在您的项目中声明 Grades 类?
我不相信这两种方法都很好 - 但是最佳做法是什么?还是经常做的?
【问题讨论】:
-
库的方法签名是什么?是否在签名中接受
Grades。 -
@SajanChandran 你没抓住重点,图书馆是他/她的。顺便说一句,让 API 传递原始数据是个好主意。如果库需要的只是一个东西的哈希图,那么#1 是个好主意。
-
API 的分离似乎有点不寻常,因为您的代码和库都在同一个域上运行。但是,由于您希望将库完全分开,如果您可以明确定义键,则选项 1 会更好。最好的办法是从库中公开一个接口并实现(如下所示)
标签: java object libraries pass-by-value