设计模式 -单例模式

设计模式 -单例模式

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

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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值