- 饿汉式单例
1
2
3
4
5
6
7
|
public
class Singleton { private
Singleton(){} private
static Singleton instance =
new Singleton(); public
static Singleton getInstance(){ return
instance; } } |
- 懒汉式单例
1
2
3
4
5
6
7
8
|
public
class Singleton { private
static Singleton instance =
null ; private
Singleton() {} public
static synchronized
Singleton getInstance(){ if
(instance == null ) instance =
new Singleton(); return
instance; } } |
注意:实现一个单例有两点注意事项,①将构造器私有,不允许外界通过构造器创建对象;②通过公开的静态方法向外界返回类的唯一实例。这里有一个问题可以思考:Spring的IoC容器可以为普通的类创建单例,它是怎么做到的呢?