设计模式 -单例模式

来源:互联网 发布:淘宝gta5刷钱靠谱吗 编辑:程序博客网 时间:2024/06/05 04:58

设计模式 -单例模式

简单说一下 设计模式的概念, 设计模式在我看来就是一种 成熟的“模板”。是一套反复被使用的,多数人知晓的,经过分类编码的,代码设计经验的一种总结。使用它的目的是为了增强代码的重用性,让代码更容易被他人理解,保证代码的可靠性。

单例模式的概念就是 一个类的对象有且只有一个!常用的 比如说 日志对象, 工具类,缓存 等。
单例模式分两种 最简单的饿汉模式

public class SingleEHanfirst {    //1 构造方法私有化,不允许 外部直接创建对象!    private SingleEHan(){    }    //2 创建类的唯一实例!变为静态的 变量 (对象归类所有)    static SingleEHan instanace = new SingleEHan();}

测试代码

        SingleEHanfist f1 = SingleEHanfist.instanace;        SingleEHanfist f2 = SingleEHanfist.instanace;        if(f1==f2)        {            System.out.println("两个是一个对象");        }

这样写程序有一个问题,就是我们在访问一个类的时候,这样去直接的访问类的成员变量,不符合我们面向对象的思想! 所以我们应该把instance 这个成员变量私有化,通过静态方法去访问静态变量改进如下

public class SingleEHan {    //1 构造方法私有化,不允许 外部直接创建对象!    private SingleEHan(){    }    //2 创建类的唯一实例!变为静态的 变量 (对象归类所有)    private static SingleEHan instanace = new SingleEHan();    //3 提供静态方法获取实例    public static SingleEHan getInstance(){            return instanace;    }}

测试代码如下

        SingleLanhan s1 = SingleLanhan.getInstance();        SingleLanhan s2 = SingleLanhan.getInstance();        if(s1==s2)        {            System.out.println("两个是一个对象");        }

懒汉模式基本思路和饿汉模式差不多

public class SingleLanhan {    //1 构造方法私有化,不允许 外部直接创建对象!    private SingleLanhan(){    }    //**声明**类的唯一实例     private static SingleLanhan instanace;    //提供一个用于获取实例的方法!    public static SingleLanhan getInstance(){              //如果类的实例为空 创建         if(instanace==null)        {            instanace = new SingleLanhan();        }            return instanace;    }}

测试代码与上相同。

两种模式简单的比较

饿汉模式的特点 加载类的时候 已经创建了类的 实例 ,获取对象的时候比较快 ,因为类的实例在类加载的时候已经创建了。线程安全
懒汉模式则正好相反, 加载类的时候比较快,获取对象的时候比较慢。线程不安全

0 0