我正在用JGit做点什么
情况是这样的。
用户将打开一个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()
获取已打开的存储库的信息。
这会导致问题吗?这是一个坏方法吗?
有更好的解决方案吗?
答案 0 :(得分:1)
通常,我会说使用静态字段来存储这样的信息是可以的。但是,如你所说
我应该通过程序
打开并使用此存储库
这个问题是:您是否可能运行在同一个JVM中运行的程序的多个实例,而这些JVM中有不同的存储库被打开?如果是这种情况,则应避免使用静态字段(也称为全局变量)来存储此信息。尝试在程序中识别一个类,它可以将您的信息存储为程序状态的一部分,该状态与程序一样长,而不像JVM那样长。您仍然可以使用包含当前打开的存储库中所有信息的CurrentRepo
类,但不应将此信息存储在静态字段中。