简介
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
优点:
- 简单,全局只有一个一个对象,方便控制和修改属性。
- 从某种程度上说消耗资源少,毕竟只需要创建一次。
缺点:
- 单例设计模式虽然简单,但对于一些不严谨的代码容易出现内存泄露问题;例如:activity中创建一个内部类,作为一个单例对象的listener,如果在activity销毁时,没有将此listener置空,就会出现leak。
- 当然还有其它的问题,比如在activity的生命周期中有对单例对象进行操作,可能出现后面的activity执行了oncreate方法,前一个activity又执行到ondestory方法,当然这种情况是不适合使用单例模式的。
使用
单例设计模式的两个实现方式:
-
饿汉式
/// <summary> /// 饿汉模式 /// </summary> public class Singleton { //私有的构造器 private Singleton() { } //私有的静态实例 private static Singleton instance = new Singleton(); public static Singleton GetInstance() { return instance; } }
-
懒汉式
/// <summary>
/// 懒汉模式
/// </summary>
public class Singleton2
{
//私有的构造器
private Singleton2()
{
}//私有的静态实例 private static Singleton2 instance = null; public synchronized static Singleton2 GetInstance() { if (instance==null) { instance=new Singleton2(); } return instance; } }