创建类的新对象或使用静态方法?

时间:2015-06-29 18:09:04

标签: java class object methods

我有一个由3个类组成的简单程序。 GUI,驱动程序和主要。

主类:

public static void main(String[] args){
GUI theGUI = new GUI();
}

GUI类:

public void makeGUI(){
final GUI guiInstance = new GUI();
//some other code here
}

我可以将makeGUI()方法设为静态,而不是创建两个对象,这样我就可以避免创建一个不必要的对象了吗?我知道对于这种规模的程序,性能并不重要,但尝试避免不必要的对象是一种很好的编程习惯吗?

2 个答案:

答案 0 :(得分:1)

有两种主要模式可以帮到你。第一个是singleton,可能是你正在做的最直接的。我们的想法是,您只需创建一次对象,然后使用静态方法来获取对象。在您的示例中,GUI类可能如下所示:

public class GUI{
    private static final GUI instance = new GUI();

    //Make constructor private so that no one can create an instance
    private GUI(){}

    public GUI getInstance(){
        return instance();
    }

    ... other code
}

还有其他方法来创建单身,但这可能是最简单的。

另一种模式称为factory模式。这类似于单例,但可以让您更多地控制实例的数量以及如何创建实例。对于你正在做的事情,这可能有点过头了。

当你真的希望沿着保持实例的方式走下去并拥有更大的灵活性时,你想要开始研究Dependency injection和框架,例如spring。

答案 1 :(得分:0)

有趣的是,根据具体情况,这个小问题确实有很多重要的解决方案。您处理的应用程序越大,问题就越多。特别是当您进入单元测试和交换实现时。基本上,如果有任何new来电,您的代码将不会有很多。

这可以通过以下方式解决,以增加复杂性......

1)工厂方法。 example

2)建设者。 example

3)单身人士。 example

4)依赖注入或控制反转。 example

5)服务定位器。 example

6)Web服务。为什么在可以使用服务时创建新对象。 example