java是创建类的新对象还是使用静态方法?
我有一个简单的程序,由三个类组成。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()方法设为静态,这样就可以避免创建一个不必要的对象吗?我知道对于这样规模的程序来说,性能并不重要,但是尝试避免不必要的对象是一种良好的编程实践吗
# 1 楼答案
有趣的是,这个小问题实际上有很多大的解决方案,这取决于上下文。应用程序越大,问题就越严重。尤其是当您进入单元测试和交换实现时。基本上,您的代码不会有太多的
new
调用按照增加复杂性的顺序,这可以通过以下方法解决
1)工厂方法example
2)建筑商example
3)单身example
4)依赖注入或控制反转example
5)服务定位器example
6)网络服务。既然可以使用服务,为什么还要创建一个新对象呢example
# 2 楼答案
这里有两种主要的模式可以帮助你。第一个是singleton,对于你正在做的事情来说可能是最直接的。其思想是,每个对象只创建一次,然后使用静态方法获取对象。在您的示例中,GUI类可能如下所示:
还有其他方法可以创建单例,但这可能是最简单的
另一种模式称为factory模式。这与singleton类似,但可以让您更好地控制实例的数量和创建实例的方式。对于你正在做的事情来说,这可能是矫枉过正
当你真的想让实例保持低调,并拥有更大的灵活性时,你需要开始研究Dependency injection和spring等框架