《“唯我独尊”之单例模式》
所谓设计模式,即为一种套路,一种成功经验。
所以要成为一名成功的“搬砖”人士,套路必不可少。
在此,将简述Java中的套路之一:单例模式
@1.何为单例模式?
1)一种创建模式(与创建对象相关)
2)设计一种规则,让某个类的对象在外界只能获得独一份。
(充满智慧的心机Boy)
@2.单例应用场合?(只需要一个对象的场合)
1)池对象的设计
2)如:任务管理器对象(其界面只能打开一个)
@3.单例模式设计?
1)构造方法私有(外界不能直接构建对象)
2)提供静态方法访问单例对象
action
/*方案一/
class Singleton01 {
private Singleton01() {}
private static Singleton01 instance;
/使用的对象锁为Singleton01.class/
public static Singleton01 getInstance() {
if(instance == null) {
instance = new Singleton01();
}
return instance;
}
public void show() {}
}
/*方案二/
class Singleton02 {//懒汉单例(大对象,稀少用)
private Singleton02() {}
private static Singleton02 instance;
public static Singleton02 getInstance() {
if(instance == null) {
synchronized (Singleton02.class) {
if(instance == null) {
instance = new Singleton02();
}
}
}
return instance;
}
public void show() {}
}
/*方案三/
class Singleton03 {//饿汉单例(小对象,频繁用)
private Singleton03() {}
/类加载时初始化此属性/
private static Singleton03 instance = new Singleton03();
public static Singleton03 getInstance() {
return instance;
}
public static void display() {}
public void show() {}
}
/*方案四/
class Singleton04 {
private Singleton04() {}
/*采用此内部类延迟Singleton04对象的创建,何时需要何时创建,
* 是Singleton03此方案一种优化*/
private static class Inner {
static Singleton04 instance = new Singleton04();
}
public static Singleton04 getInstance() {
return Inner.instance;
}
public static void display() {}
public void show() {}
}
/*方案五/
enum Singleton05 {//特殊的类型,枚举,Singleton05.class
instance;//对象(类加载时创建)
public void show() {}
}