单例模式

2019/5/12 posted in  Android

单例模式的意义

单例模式是最简单的设计模式之一,属于创建模式,它提供了一种创建对象的方式,确保只有单个对象被创建。这种设计模式主要目的是使整个系统中只能出现一个类的实例,即一个类只有一个对象。

  • 优点
    • 由于频繁使用对象,可以省略创建对象所花费的时间,尤其是对于重量级的对象而言,是很重要的。
    • 由于不需要频繁的创建对象,所以GC的压力变轻了,不需要频繁的分配资源和释放资源。
  • 缺点
    • 简单的单例模式设计都很简单,但是复杂的单例模式需要考虑线程安全等并发问题,引入了部分复杂度

单例模式的设计

设计单例模式的时候需要考虑的集中因素

  • 线程安全
  • 延迟加载
  • 代码安全(防止序列化攻击,防止反射攻击)
  • 性能因素
线程安全 并发性能好 可以延迟加载 序列化/反序列化安全 能抵御反射攻击
饿汉式 Y Y
懒汉式-不加锁 Y Y
懒汉式-加锁的 Y Y
DCL Y Y Y
静态内部类 Y Y Y
枚举 Y Y Y Y

饿汉模式