------<a href="http://www.itheima.com"target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
单例设计模式的步骤:只能要求类创建一个对象。
1.首先只能创建一个对象,所以只能在本类中,不允许别的类创建本类对象的话只能把本类的默认构造函数私有化;
2.创建一个本类对象,私有的,静态的(因为方法是静态的,静态的方法只能访问静态的属性);
3.创建一个对外提供的方法,不允许创建对象,所以只能用类名访问,所以方法是静态的。
注意:使用单例的时候建议使用饿汉式,不建议使用懒汉式,(饿汉式是上来就吃)
使用懒汉式时还得用多线程的同步,比较麻烦
缺点:
开销:虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题,上面的五种实现方式中已经说过了。
可能的开发混淆:使用 singleton 对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用 new 关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。
对象的生存期:Singleton 不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于 .NET Framework 的语言),只有 Singleton 类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中(如 C++),其他类可以删除
对象实例,但这样会导致 Singleton 类中出现悬浮引用