单例模式(Singleton)
发布日期:2006年12月01日,更新日期:2006年12月01日
写在前面
如果您还没有阅读面向对象设计(Object-Oriented Design),那么我建议您从那里开始。
名称
单例模式(Singleton)
结构
我们使用单例模式的主要目标是为系统提供一个类的唯一实例。
这里只有一个参与者,单例Singleton。它负责创建自己的唯一的实例并提供对它的访问。
单例模式是一个看来简单实则很复杂的模式。在使用的过程中,我们要考虑线程安全性、单例的可变性等。在Java中,我们还需要考虑JVM实例和类装载器等,以防破坏单例的唯一性。
示例
暂缺状态
如果您在学习 Java SE 或 Eclipse 的过程中发现了适合这里的示例,希望能告诉我们。我们会在团队中感谢给予我们帮助的朋友们。
示例 1
这个示例源于Java SE。您可以查阅java.lang.Runtime。
Runtime实例化自己的方式和GoF描述的不同,具有Java自己的特点。请看下面的源代码:
public class Runtime {
private static Runtime currentRuntime = new Runtime();
public static Runtime getRuntime() {
return currentRuntime;
}
}
通过这个代码片段不难看出Runtime的单例currentRuntime是在类装载时创建的。
变体
如果您在学习 Java SE 或 Eclipse 的过程中发现了适合这里的变体,希望能告诉我们。我们会在团队中感谢给予我们帮助的朋友们。
变体 1
多例模式是对单例模式的推广,它可以为系统提供多个实例。实例的数目可以是确定的也可以是不确定的。
