编程题:写一个Singleton示例
什么是Singleton?
-
Singleton:在Java中即指单例设计模式,它是软件开发中最常用的设计模式之一。
- 单:唯一
- 例:实例
-
单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。
- 例如:代表JVM运行环境的Runtime类
要点
- 一是某个类只能有一个实例;
- 构造器私有化
- 二是它必须自行创建这个实例;
- 含有一个该类的静态变量来保存这个唯一的实例
- 三是它必须自行向整个系统提供这个实例;
- 对外提供获取该实例对象的方式:
- (1)直接暴露
- (2)用静态变量的get方法获取
- 对外提供获取该实例对象的方式:
几种常见形式
- 饿汉式:直接创建对象,不存在线程安全问题
- 直接实例化饿汉式(简洁直观)
- 枚举式(最简洁)
- 静态代码块饿汉式(适合复杂实例化)
- 懒汉式:延迟创建对象
- 线程不安全(适用于单线程)
- 线程安全(适用于多线程)
- 静态内部类形式(适用于多线程)
代码示例
小结
- 如果是饿汉式,枚举形式最简单
- 如果是懒汉式,静态内部类形式最简单