Java 创建类的新对象还是使用静态方法?

Java 创建类的新对象还是使用静态方法?,java,class,object,methods,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()方法设为静态,这样就可以避免创建一个不必要的对象吗?我知道对于这种规模

我有一个由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()方法设为静态,这样就可以避免创建一个不必要的对象吗?我知道对于这种规模的程序来说,性能并不重要,但是尝试避免不必要的对象是一种良好的编程实践吗?

这里有两种主要模式可以帮助您。第一种方法是,而且可能是最直接的方法。其思想是,每个对象只创建一次,然后使用静态方法获取对象。在您的示例中,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
}
还有其他方法可以创建单例,但这可能是最简单的方法

另一种模式称为模式。这类似于singleton,但可以让您更好地控制实例的数量和创建实例的方式。对于你正在做的事情来说,这可能是矫枉过正


当您真的想继续保持实例的稳定,并具有更大的灵活性时,您需要开始研究spring等框架

有趣的是,这个小问题根据上下文有很多大的解决方案。您处理的应用程序越大,问题就越严重。尤其是当您进入单元测试和交换实现时。基本上,您的代码不会有太多的调用(如果有的话)

按照增加复杂性的顺序,可以通过以下方法解决此问题

1) 工厂方法

2) 建筑商

3) 辛格尔顿

4) 依赖注入或控制反转

5) 服务定位器


6) 网络服务。既然可以使用服务,为什么还要创建新对象呢

对。这就是所谓的工厂方法,它是合理和常见的。(番石榴用它来制作大多数物品)。制作不必要的物品绝对不好。从您的代码中,很难看出这些不必要的对象会是什么be@Alan非常感谢。更新了新的链接,以获得更好的示例。