1、单例设计模式
当你遇到这样的情况,某个类的对象在整个系统运行期间有且只能有一个对象。
单例:单个的实例对象
2、要点
(
1)构造器私有化
(
2)在单例类的内部创建这个唯一的对象
3、单例模式的分类
单例还有分好多种形式,根据创建对象的早晚来分:
(1)饿(恶)汉式
在类的加载和初始化时,就创建这个对象,不管使用者需不需要这个对象
A:枚举式
enum SingleEnum
{
INSTANCE
}
B:早期枚举式,JDK1.5之前的枚举类型就是这样的
class Single{
public static final Single INSTANCE
= new Single();
private Single(){
}
}
C:将静态常量对象私有化,通过静态方法获取唯一的实例对象
class Singleton{
private static final Singleton INSTANCE
= new Singleton();
private Singleton(){
}
public static Singleton
getInstance(){
return INSTANCE
;
}
}
(2)懒汉式
创建对象晚,当用户来拿对象的最后一刻才创建,你不拿这个对象就不创建
A:安全
class Lazy{
private static Lazy instance
;
private Lazy(){
}
public static Lazy
getInstance(){
if(instance
== null
){
synchronized (Lazy
.class) {
if(instance
== null
){
instance
= new Lazy();
}
}
}
return instance
;
}
}
B:静态内部类
class Lan{
private Lan(){
}
static class Inner{
static final Lan INSTANCE
= new Lan();
}
public static Lan
getInstance(){
return Inner
.INSTANCE
;
}
}