设计模式:单例设计模式和工厂模式

294 阅读1分钟

单例设计模式

定义:保证一个类只有一个实例(将类设置成static并将其构造器私有),并且提供一个全局访问点。 场景: 重量级对象,不需要多个实例,比如线程池,windows任务管理器,windows回收站,数据库的连接池。

优点:

  • 单例模式只生成一个实例,减小了系统开销。
  • 可以在系统设置全局的访问点,优化共享资源访问。

1.饿汉模式(线程安全,调用效率高,不可以延时加载)

不能延迟加载:类一声明就开始实例化

2.懒汉模式(线程安全,调用率不高,可以延时加载)

类初始化的时候,不用直接实例化,调用的时候在实例化。获取该对象的方法,加sychronized

3.DCL懒汉式,优化了懒汉式加载慢的问题,利用同步代码块,进行判断,如果对象还没有被创建,就进行初始化,若果已经被创建了,就直接返回该对象

4.饿汉式改进

5.枚举单例(线程安全,调用效率高,不可以延时加载)

工厂模式:创建者和调用者分离

核心本质:实例化对象不使用new,用工厂方法代替。将选择实现类,创建对象同一管理和控制,从而将调用者和实现类解耦。

简单工厂模式

抽象工厂模式