对象的全局实例

时间:2013-04-25 17:15:58

标签: java class singleton jung

实际上,我使用jung库来构建我的超图。

我想在我的应用程序中只使用一个超图的实例,这样我就无法访问它并从我的应用程序中的任何类中进行mofify(添加顶点,添加hyperEdge等)。

有可能吗?

我尝试使用单例模式,但据我在this question中读到,这不是一个好的选择。

1 个答案:

答案 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,但如果您不熟悉它,这对于小型应用程序来说就太过分了。