Android设计模式:单例设计模式

单例设计模式分为:懒汉设计模式和饿汉设计模式。确保某个类只有一个实例,而且自行实例化提供给外部使用。
(1)饿汉式:

public class SingleTon {
        public static SingleTon instance = new SingleTon ();
        private SingleTon () {
         }
        public static SingleTon getInstance() {
            return instance;
        }
    }

优点:简单,线程安全。
缺点:实例对象是static的,在声明的时候就实例化了,浪费资源。

(2)懒汉式:

public class SingleTon {
        private static SingleTon instance = null;
        private SingleTon () {
        }
        public static synchronized SingleTon getInstance() {
            if (instance == null)
                instance = new SingleTon ();
            return instance;
        }
    }

优点:用到的时候才会去实例化,在一定程度上节约了资源。
缺点:getInstance方法是用synchronized修饰的,该方法是同步的,为了保证线程安全,但是导致每次调用该方法的时候都会被同步,这样会消耗不必要的资源

(3)双重检查锁定:

public class SingleTon {
        private static Singleton instance = null;
        private SingleTon () {
        }
        public static SingleTon getInstance() {
            if (instance == null) {
                synchronized (Singleton.class) {
                    if (instance == null) {
                        instance = new SingleTon ();
                    }
                }
            }
            return instance ;
        }
    }

优点:第一次执行getInstance方法时才会实例化,资源利用率高,效率高。
缺点:虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销,可以通过使用静态初始化解决此问题。

(4)静态内部类实现:

public class SingleTon {
        private SingleTon() {
        }

        public static SingleTon getInstance() {
            return SingleTonHandler.singleTonInstance;
        }

        public static class SingleTonHandler {
            private static final SingleTon singleTonInstance = new SingleTon();
        }
    }

你可能感兴趣的:(Android设计模式:单例设计模式)