欢迎访问宙启技术站
智能推送

通过new()方法实现对象的单例模式

发布时间:2023-12-29 17:18:50

单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局的访问点。

在使用单例模式时,通过某种方式防止直接创建对象实例,而是通过一个公共的静态方法来获取实例对象。这个静态方法负责创建一个实例对象,并在后续的调用中返回这个实例。

在很多情况下,使用单例模式可以避免资源的浪费,提高系统的性能。下面以一个简单的日志工具类来演示如何使用单例模式。

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类的构造方法被声明为私有,这意味着无法通过new关键字直接创建Logger的实例。

通过getInstance()方法获取Logger类的 实例。该方法首先检查instance是否为null,如果为null,则创建一个新的Logger实例并赋值给instance;如果instance不为null,则直接返回现有的实例。

实现了Logger类的单例模式后,可以在任何需要使用日志的代码中通过getInstance()方法获取Logger的实例,并调用其log()方法输出日志。

public class Main {
    public static void main(String[] args) {
        // 获取Logger实例
        Logger logger = Logger.getInstance();
        // 输出日志
        logger.log("Hello, world!");
    }
}

在上述代码中,通过Logger.getInstance()获取Logger类的 实例,并通过调用其log()方法输出日志。

总结:

单例模式通过限制一个类只能有一个实例来提供了一个全局的访问点。这种模式可以避免资源的浪费,提高系统的性能。在实现单例模式时,通常需要将类的构造方法声明为私有,通过一个公共的静态方法来获取实例对象。