面试常问的设计模式

简便回答版

  1. 单例模式:单例对象对应的类只有一个实例存在,就是在内存中只有一个对象存在,它不用去频繁的new和销毁对象,大大节约了内存。
1.懒汉式单例:一开始没有被实例化,需要用的时候自己去实例化创建,代码原理就是:定义一个静态的对象但是不去new它,需要用这个对象的时候再去new。
public class Singleton {
 //默认不会实例化,什么时候用就什么时候new
    private static Singleton instance = null;
    private Singleton(){

    }
    public static synchronized Singleton getInstance(){
        if(instance == null){
   //什么时候用就什么时候new
            instance = new Singleton();
        }
        return instance;
    }
}
2.饿汉式单例:类一开始加载的时候就将对象实例化完成了,后面需要用的时候直接拿对象就行了。
public class Singleton {
 //一开始类加载的时候就实例化,创建单实例对象
    private static Singleton instance = new Singleton();
    private Singleton(){

    }
    public static Singleton getInstance(){
        return instance;
    }
}

2.工厂模式:spring就是工厂模式,通过bean将对象注入到beanFactory工厂里面,后续创建对象就是工厂帮我们创建对象,我们只需要调用就可以了。

注:懒汉和饿汉借鉴的是这位大佬的博客整理

上一篇:实现Singleton模式


下一篇:java面试题之手写单例设计模式