gpt4 book ai didi

java - 在java中创建主类的静态单例是不好的编程习惯吗?

转载 作者:行者123 更新时间:2023-12-02 00:56:27 25 4
gpt4 key购买 nike

我正在考虑使用 Singelton 设计模式并创建我的主类的 Singelton。在我搜索时,我发现一些评论认为这是相当糟糕的编程实践,特别是因为静态方法的声明并不适合面向对象的编程。您对改进我的代码有什么建议吗?

public class MainClass {
private static MainClass instance = new MainClass();

public static MainClass getMainInstance() {
return instance;
}

public static void main(String[] args) {
MainClass main = Main.instance;
}
}

最佳答案

虽然设计模式的使用通常有助于干净的编程,但在不必要的情况下过度使用它们会导致代码过于复杂。

如果您想创建应用程序的单例,那么声明一个类或更好的枚举来包含将由您的 main 函数运行的应用程序会更有利。

使用枚举:

public enum Application{
instance;

public void run(){
//do awesome stuff
}
}

这样做的效果是,即使通过序列化,应用程序也无法复制,而且您也无法使用接口(interface)来概括您的应用程序。

当使用普通类来实现单例时,您需要将构造函数设为私有(private)或保护该类,否则会再次实例化。

使用带有私有(private)构造函数的普通类:

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

private Application(){}

public Application getApplication(){
return instance;
}

public void run(){
//do awesome stuff
}
}

此变体的优点是该类仍然可以实现接口(interface)或扩展类,例如可运行。缺点是通过使用序列化,该类仍然可以多次实例化。

关于java - 在java中创建主类的静态单例是不好的编程习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61307490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com