设计模式:解决通用问题的架构
单例模式
是什么
确保一个类只有一个对象
饿汉式单例
获取对象时,对象早就创建好了
创建步骤
- 把类的构造器私有(private)
- 定义一个类变量记住类的一个对象
- 定义一个类方法,返回对象
把类构造器私有化
|
|
这样我们就无法通过new A()
去创建无限制对象了,那问题来了,我们怎么创建一个对象呢?
定义一个静态变量记住类的一个对象
|
|
这时候我们就可以通过A a1 =A.a;
来获取对象了,因为是静态变量,所以不管我们创建几次,都只能获取一个对象了
但这样就安全了吗?不,当我们使用A.a = null
,那不就把这个实例给销毁了吗?那怎么才能更安全呢?我们可以同时将这个静态变量也私有化呢?这样就来了以下代码
|
|
那这样又引出来了一个问题?那我们怎么获取这个实例呢?
定义一个类方法,返回对象
|
|
这样我们就可以使用A a1 = A.getInstance()
来获取实例了
使用场景
单例对象频繁使用的时候,使用饿汉式单例
懒汉式单例
拿对象时,才开始创建对象
写法
|
|
使用场景
单例对象不频繁使用的时候,使用懒汉式单例