什么是单例模式?

时间:2019-07-17 05:18:46

标签: oop design-patterns

在很多情况下,几种语言和不同情况下,我看到了这个短语。我从来没有机会使用这种模式,但是我很好奇确切地知道它是什么。总体上可以有人定义Singleton吗?

该实现涉及“ Singleton”类中的静态成员私有构造函数静态公共方法,它们返回对静态成员。

这些粗体字是我无法理解的地方。

1 个答案:

答案 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属性在应用程序生命周期内仍然有效

私有构造函数意味着除类内部的方法外,没有其他人可以实例化(或访问)构造函数。通常在仅包含静态成员的类中使用。

当我们将的成员声明为静态时,这意味着无论创建了多少类对象,都只有个副本静态成员。静态成员由该类的所有对象共享

Source