在很多情况下,几种语言和不同情况下,我看到了这个短语。我从来没有机会使用这种模式,但是我很好奇确切地知道它是什么。总体上可以有人定义Singleton吗?
该实现涉及“ Singleton”类中的静态成员,私有构造函数和静态公共方法,它们返回对静态成员。
这些粗体字是我无法理解的地方。
答案 0 :(得分:0)
Singleton是一种软件设计模式,它将类的实例化限制为一个“单个”实例。这意味着访问该对象,在应用程序生命周期中只有一个实例。这个例子更清楚地说明了这种模式。
想象一下,您需要记录项目中的所有消息和错误。那么每次需要记录一条消息时,实例化Logger类可能都是一堆样板代码。
Logger logger = new Logger();
logger.LogMessage("a new message")
Singleton通过让您在类中包装一个类的实例来解决该问题。看一下实现。
public final class Logger {
private static final Logger INSTANCE = new Logger ();
private Logger () {}
public static Logger getInstance() {
return INSTANCE;
}
public void LogMessage(String message){
// do something with message
}
}
从现在开始,您需要以这种方式使用记录器类。
Logger.getInstace().LogMessage("")
Logger类的INSTANCE属性在应用程序生命周期内仍然有效
私有构造函数意味着除类内部的方法外,没有其他人可以实例化(或访问)构造函数。通常在仅包含静态成员的类中使用。
当我们将类的成员声明为静态时,这意味着无论创建了多少类对象,都只有个副本静态成员。静态成员由该类的所有对象共享