特点:
1:一个类只有一个对象
2:必须是类内部自行创建这个对象
3:向整个系统提供这个对象
实现过程:
1:类的构造函数是private
2:类中含有一个该类的静态私有对象
3:提供一个静态的公有函数用于创建、获取本身的静态私有对象
4:当然还要有一个private的clone方法,防止克隆
优点
1:实例控制,单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
2:灵活性,因为类控制了实例化过程,所以类可以灵活更改实例化过程
缺点
1:开销,虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。
2:可能的开发混淆,使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。
3:对象生存期,不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用