单例存在哪些问题?

  • 单例对 OOP 特性的支持不友好
  • 单例会隐藏类之间的依赖关系
  • 单例对代码的扩展性不友好
  • 单例对代码的可测试性不友好
  • 单例不支持有参数的构造函数

有何替代解决方案?

  • 静态方法
  • 将单例作为参数
  • 工厂模式
  • IOC 容器
  • 程序员自己