Java 创建类的新对象还是使用静态方法?
我有一个由3个类组成的简单程序。GUI、驱动程序和主程序 主要类别: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()方法设为静态,这样就可以避免创建一个不必要的对象吗?我知道对于这种规模
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非常感谢。更新了新的链接,以获得更好的示例。