JavaScript must be enabled in order for you to view this page. However, it seems JavaScript is either disabled or not supported by your browser. To view this page, enable JavaScript by changing your browser options, then Try again! .

文章目录
 
我的论坛
Google 网上论坛 Beta 版
Do Best Developer
访问此论坛

单例模式(Singleton)

solo L
发布日期:2006年12月01日,更新日期:2006年12月01日

写在前面

如果您还没有阅读面向对象设计(Object-Oriented Design),那么我建议您从那里开始。

回页首

名称

单例模式(Singleton)

回页首

结构

单例模式的结构图

我们使用单例模式的主要目标是为系统提供一个类的唯一实例。

这里只有一个参与者,单例Singleton。它负责创建自己的唯一的实例并提供对它的访问。

单例模式是一个看来简单实则很复杂的模式。在使用的过程中,我们要考虑线程安全性、单例的可变性等。在Java中,我们还需要考虑JVM实例和类装载器等,以防破坏单例的唯一性。

回页首

示例

暂缺状态

如果您在学习 Java SE 或 Eclipse 的过程中发现了适合这里的示例,希望能告诉我们。我们会在团队中感谢给予我们帮助的朋友们。

示例 1

这个示例源于Java SE。您可以查阅java.lang.Runtime。

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

多例模式的结构图

多例模式是对单例模式的推广,它可以为系统提供多个实例。实例的数目可以是确定的也可以是不确定的。

回页首

相关模式

简单工厂模式(Simple Factory)

关于作者
solo L 一位有些理想主义的软件工程师,创建了solol.org。他常常在这里发表一些对技术的见解。