在java程序上保持类是一种好方法吗?
我正在用它做一些东西 情况是这样的在java程序上保持类是一种好方法吗?,java,jgit,Java,Jgit,我正在用它做一些东西 情况是这样的 FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repository = builder.setGitDir(new File(repodir)) .readEnvironment() // scan environment GIT_* variables .findGitDir() // scan u
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repository = builder.setGitDir(new File(repodir))
.readEnvironment() // scan environment GIT_* variables
.findGitDir() // scan up the file system tree
.build();
用户将打开一个git存储库,并以各种方式使用它
在程序中,此存储库在repository类中包含信息,各种函数将通过调用它来访问此存储库。这个存储库最初是由一个构建者像这样构建的
FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repository = builder.setGitDir(new File(repodir))
.readEnvironment() // scan environment GIT_* variables
.findGitDir() // scan up the file system tree
.build();
在制作程序时,我认为我应该保持这个存储库在程序中打开并可用。我有一个想法,就是创建一个这样的类来保存当前打开的存储库
public class CurrentRepo{
private static Repository repository;
public static Repository getRepository(){
return this.repository;
}
public static void setRepository(Repository repository){
this.repository = repository;
}
}
之后我会打电话给
CurrentRepo.getRepository()
获取已打开的存储库的信息
这会引起问题吗?这样不好吗
有更好的解决方案吗?一般来说,我认为使用静态字段来存储这样的信息是可以的。然而,正如你所说 我应该在整个程序中保持此存储库的打开和可用性
gernal的问题是:是否可能在同一个JVM中运行多个程序实例,并且打开了不同的存储库?如果是这种情况,您应该避免使用静态字段(也称为全局变量)来存储此信息。尝试在您的程序中识别一个类,该类可以将您的信息存储为程序状态的一部分,该状态与程序一样长,而不是与JVM一样长。您仍然可以使用像
CurrentRepo
这样的类,该类包含当前打开的存储库中的所有信息,但是您不应该将这些信息存储在静态字段中。为什么CurrentRepo
声明为静态
?这是一个内部类吗?@DavidConrad哦,不是。我想不需要声明。谢谢回答!我明白你的意思。我认为让CurrentRepo成为一种单身人士类型会很好。这样行吗?