设计模式--单例模式

来源:互联网 发布:怎么样开淘宝充值店 编辑:程序博客网 时间:2024/06/13 10:27
单例模式的作用:保证一个类只能产生一个实例,减少内存开销,屏蔽对象创建的复杂度。

单例模式编码的核心:
*构造方法私有化,避免直接创建对象
*单例类中包含一个静态实例
*包含一个静态方法返回,切返回值为单例类的实例(类的静态实例)

单例的几种实现及优缺点说明:

1.饿汉式
/*单例模式:饿汉式
* */
public class SingleInstance {    private static final SingleInstance instance = new SingleInstance();        private SingleInstance(){    }        public static SingleInstance getInstance(){        return instance;    }}
优点:写法简单,不存在多线程同步问题。
缺点:单例随着类的加载而初始化,但可能出现单例产生之后,一直未被使用却一直占用内存,直到程序结束的情况。

2.懒汉式
public class SingleInstance{    private static SingleInstance mInstance;        private SingleInstance(){     }        synchronized public static SingleInstance getInstance(){        if(mInstance == null){            mInstance = new SingleInstance();        }        return mInstance;    }}
优点:只在需要的时候产生单例模式,一些场景下节约内存
缺点:对类的静态方法用同步synchronized,同步方法调用时效率低。

3.懒汉式优化版
public class SingleInstance{    private static SingleInstance mInstance;        private SingleInstance(){       }        synchronized public static SingleInstance getInstance(){        if(mInstance == null){            synchronized (SingleInstance.class) {                if(mInstance == null){                    mInstance = new SingleInstance();                }            }        }     return mInstance;}
优点:同步方法改为同步代码块,同步方法调用时提高效率。

4.最佳实现方法
public class SingleInstance{            private SingleInstance(){        }                public static SingleInstance getInstance(){            return SingleInstanceClass.instance;        }                private static class SingleInstanceClass{            private static SingleInstance instance = new SingleInstance();        }        }
优点:内存占用低,线程同步效率高,线程安全(原因未查明)。
原创粉丝点击