B15-关于单例的滥用
一、单例的问题
1、全局状态
“单例就是披着羊皮的全局状态” 。一个单例可以在不需要显示声明对其依赖的情况下,被使用在任何地方。单例的全局性和有状态性,导致隐式的在两个看起来完全不相关的模块之间建立了耦合。
2、生命周期
单例应该只用来保存全局的状态,并且不能和任何作用域绑定。如果这些状态的作用域比一个完整的应用程序的生命周期要短,那么这个状态就不应该使用单例来管理。用一个单例来管理用户绑定的状态,是代码的坏味道,你应该认真的重新评估你的对象图的设计。
二、避免使用单例的方法
1、依赖注入
原文地址:http://www.cocoachina.com/industry/20140615/8830.html