单例模式(5种)

it2022-05-05  199

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){//提高效率 //Lazy.class代表是当前Lazy类的Class对象 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; } }

最新回复(0)