单实例对象(Singleton)是一种设计模式,它确保一个类只能创建一个对象,并提供一个全局访问该对象的方法。
在单实例模式中,该类的构造函数是私有的,因此不能从外部实例化该类。而是通过类中的静态方法来访问实例,该方法负责创建对象并返回实例,如果对象已经存在,则返回已有的实例。
单实例对象的一个常见应用场景是对于那些需要协调访问全局资源的类,例如日志记录器、数据库连接器等。在这些情况下,单实例模式可以确保只有一个实例在任何时候被使用,从而避免资源竞争和冲突。
一个经典的单实例模式的例子是实现一个日志记录器,该记录器在应用程序中负责记录日志消息。由于在整个应用程序中需要使用同一个日志记录器,因此使用单实例模式可以确保只有一个实例在任何时候被使用。
下面是一个基本的单实例模式实现示例:
public class Logger {
private static Logger instance;
private Logger() {}
public static Logger getInstance() {
if (instance == null) {
instance = new Logger();
}
return instance;
}
public void log(String message) {
System.out.println("Log: " + message);
}
}
在上面的示例中,我们通过将构造函数设为私有来防止从外部实例化 Logger
类。然后,我们提供了一个名为 getInstance()
的静态方法,该方法负责创建或返回现有的实例。
我们可以通过以下方式获取单个实例并使用该实例记录日志消息:
Logger logger = Logger.getInstance();
logger.log("This is a log message");