单例模式

单例模式的定义

维基百科的定义

In software engineering, the singleton pattern is a design pattern that restricts the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system. The concept is sometimes generalized to systems that operate more efficiently when only one object exists, or that restrict the instantiation to a certain number of objects.

翻译后的意思

在软件工程中,单例模式是一种设计模式,它限制了一个类的只能实例化出唯一一个对象。这是十分有用的尤其一个对象需要协调整个系统运作.这个概念在有的时候会被广义的认知当且仅当只有一个对象存在是,系统将运行的更加有效率或者将对象的实例化限制在一定的数量下.

单例模式的 UML 类图

从上面的类图可以看出,单例模式中有一个构造函数 Singleton,但是这个构造函数是私有的 (‘-‘ 符号代表私有变量),然后有一个公有的方法 getInstance()
看完 UML 类图,接下来让我们实现一个简单的单例模式

单例模式的实现

java 的单例模式

1
2
3
4
5
6
7
pubic class Singleton{
private static final Singleton instance = new Singletion();

public static Singletion getInstance() {
return instance;
}
}

java的单例模式有七种写法,这里就不一一列举了,可以参考java 单例模式的七种写法

单例模式的特点以及应用场景

从上述 UML 类图以及代码不难总结出单例模式有以下特点:

  1. 单例模式下该类有且只有一个实例
  2. 单例模式下该类自己创建自己的唯一实例
  3. 单例模式下该类必须给其他对象提供获取该实例的方法

单例模式的应用可以从单例模式的优点说起,由于单例模式在系统运行过程中只存在唯一一个实例对象,可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能,在实际应用中 数据库通常使用单例模式较多,避免重复连接数据库造成资源的浪费