1概述
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2适用性
1.当类只能有一个实例而且客户可以从一个总所周知的访问点访问它的时候。
2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例的时候。
3参与者
Singleton:定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类的操作,可能复杂创建它自己的唯一实例。
4类图
5示例
Singleton
- package cn.lynn.singleton;
- public class Singleton {
- private static Singleton instance;
- private Singleton() {
- }
- public static Singleton getInstance() {
- if (instance == null) {
- instance = new Singleton();
- }
- return instance;
- }
- }
Test
- package cn.lynn.singleton;
- public class Test {
- public static void main(String[] args) {
- Singleton instance1 = Singleton.getInstance();
- Singleton instance2 = Singleton.getInstance();
- System.out.println(instance1);
- System.out.println(instance2);
- System.out.println(instance1 == instance2);
- }
- }
Result
- cn.lynn.singleton.Singleton@175d6ab
- cn.lynn.singleton.Singleton@175d6ab
- true