单例设计模式
定义:保证一个类只有一个实例(将类设置成static并将其构造器私有),并且提供一个全局访问点。 场景: 重量级对象,不需要多个实例,比如线程池,windows任务管理器,windows回收站,数据库的连接池。
优点:
- 单例模式只生成一个实例,减小了系统开销。
- 可以在系统设置全局的访问点,优化共享资源访问。
1.饿汉模式(线程安全,调用效率高,不可以延时加载)
不能延迟加载:类一声明就开始实例化
2.懒汉模式(线程安全,调用率不高,可以延时加载)
类初始化的时候,不用直接实例化,调用的时候在实例化。获取该对象的方法,加sychronized
3.DCL懒汉式,优化了懒汉式加载慢的问题,利用同步代码块,进行判断,如果对象还没有被创建,就进行初始化,若果已经被创建了,就直接返回该对象
4.饿汉式改进
5.枚举单例(线程安全,调用效率高,不可以延时加载)
工厂模式:创建者和调用者分离
核心本质:实例化对象不使用new,用工厂方法代替。将选择实现类,创建对象同一管理和控制,从而将调用者和实现类解耦。