您的位置:首页 > 其它

设计模式--单例模式

2018-09-05 23:14 162 查看

单例模式的意义

有些对象我们只需要一个:线程池、缓存、硬件设备等

如果多个实例会有造成冲突、结果的不一致性等问题

是否可以用静态变量方式来实现?

或者程序员之间协商个全局变量?

 

单例模式:确保一个类最多只有一个实例,并提供一个全局访问点 

单例模式类图:

把构造函数私有化,getInstance中判断uniqueInstance是否已经实例化,若已经实例化直接返回,否则实例化后返回

代码演示:

package com.java.jikexueyuan.singleton;

public class Singleton {

private static Singleton uniqeInstance=null;

private Singleton(){

};

public static Singleton getInstance()
{
if(uniqeInstance==null)
{
uniqeInstance=new Singleton();
}
return uniqeInstance;

}

}

单例模式的优化

多线程问题

  可能会出现创建多个实例的情况

 

优化:

  同步(synchronized)getInstance方法:频繁情况比较耗资源

  “急切”创建实例(饿汉式):在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快

双重检查加锁

  

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: