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

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

最佳答案

有两种主要模式可以帮助您。第一个是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图案。这与单例类似,但可以让您更好地控制实例的数量以及实例的创建方式。这对于你正在做的事情来说可能有点过分了。

当您确实想要走上保持实例关闭并获得更大灵 active 的道路时,您需要开始研究 Dependency injection以及spring等框架。

关于java - 创建类的新对象还是使用静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31122633/

相关文章:

python - 打印带条件的二次方程

javascript - 在 JavaScript 中向 Map 添加键/值对的不同方法

javascript - JavaScript 中的嵌套对象,最佳实践

java - 当我的 Java 应用程序退出/崩溃时,如何摆脱 Java 子进程?

java - 是否可以要求 junit 在进行测试之前运行处方?

java - 什么是 Java 中的对等类?

class - 使用 namespace 来标识动词是不好的做法还是应该始终出现在类名中?

javascript - 未捕获的类型错误 javascript 方法

java - 避免 arg0 标签

java - 取消 PendingIntent |代码没有效果