设计模式——单例模式之“饿汉模式”与“懒汉模式”

  设计模式一共分为23种其中我们最常用的也是最简单的就是单例设计模式,什么是设计模式?为什么使用要使用模式?什么是单例模式?感觉所有的事情都是在我们有了疑问之后才会更加有求知欲!
  首先来说说设计模式,只是说下我个人看法,就好像我们的日常生活中的好多事物,比如建筑的风格与样式,时间的长久人们对建房子形成了一定的认识或者是探索出了规律、模式,哥特式建筑就是要包括尖形拱门、肋状拱顶与飞拱才能算是哥特式建筑,可以这种建筑的建造模式抽象出来理解为我们的设计模式,再比如冰箱的制造就是只有立式冰箱与卧式冰箱,而根据外形的不同,要使用不同的模式来制造,这样制造冰箱的模式可以理解为我们通常意义上的设计模式了,设计模式是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结,主要是考虑代码的可重用性。

单例模式

为什么使用单例模式

在编写代码的过程中有些对象我们只需要一个比如:一些常用的工具类、线程池、缓存等,单例模式主要是为了避免因为创建了多个实例造成资源的浪费,且多个实例由于多次调用容易导致结果出现错误。使用单例模式能够保证整个应用中有且只有一个实例。

单例模式的创建步骤

1、私有化构造器(为了使该类中不能被其他类随意获得,随意创建该类实例)。
2、私有的静态的该类的实例。
3、公有的获得该类实例的方法。

单例模式之饿汉模式

public class SingleTon {
    //私有化构造器
    private SingleTon(){}
    //私有化静态的实例
    private static SingleTon singleTon=new SingleTon();
    //公开的静态的获得实例的方法
    public static SingleTon newInstance(){
        return singleTon;
    }
}

单例模式之懒汉模式

public class SingleTon {
    //私有化构造器
    private SingleTon(){}
    //私有化静态的实例
    private static SingleTon singleTon;
    //公开的静态的获得实例的方法
    public static SingleTon newInstance(){
        if(singleTon==null){
            singleTon=new SingleTon();
        }
        return singleTon;
    }
}

饿汉模式与懒汉模式的区别

  两者的区别从代码中就可以看出来,饿汉模式的实例是在定义时创建的,这种static的变量的直接创建会在类创建的时候创建,而懒汉模式的实例是在调用newInstance方法的时候才会被创建。

区别:
饿汉模式:加载类时比较慢,但运行时比较快且线程安全
懒汉模式:加载类时比较快,但运行时比较慢,线程不安全
在编程中一般建议使用饿汉模式
  

你可能感兴趣的:(设计模式——单例模式之“饿汉模式”与“懒汉模式”)