实际上,我使用jung库来构建我的超图。
我想在我的应用程序中只使用一个超图的实例,这样我就无法访问它并从我的应用程序中的任何类中进行mofify(添加顶点,添加hyperEdge等)。
有可能吗?
我尝试使用单例模式,但据我在this question中读到,这不是一个好的选择。
答案 0 :(得分:0)
这个答案非常好enter link description here,我可能更喜欢接口和实现,但你仍然可以使用Singleton作为例子:
public interface GraphSource {
public Graph getGraph();
}
public enum DefaultGraph implements GraphSource {
INSTANCE;
private Graph<String,String> graph;
{
graph = new SparseGraph<String,String>();
}
@SuppressWarnings("rawtypes")
@Override
public Graph getGraph() {
return graph;
}
}
public class MyClass {
public MyClass(GraphSource source) {
Graph myGraph = source.getGraph();
}
}
但我会避免:
public class MyClass {
GraphSource source = DefaultGraph.INSTANCE;
public MyClass(GraphSource source ) {
Graph myGraph = source.getGraph();
}
}
因为Stub或模拟测试图很难。对于大型应用程序,我会考虑使用Inversion of Control,但如果您不熟悉它,这对于小型应用程序来说就太过分了。