当前位置: 移动技术网 > IT编程>开发语言>Java > 单例模式的学习

单例模式的学习

2019年02月11日  | 移动技术网IT编程  | 我要评论

单例模式

第一章介绍

单例设计模式:保证类在内存中只有一个对象

第二章饿汉式(上来就创建私有的本类对象)

    /*

     *

     * 单例设计模式:保证类在内存中只有一个对象

     */

public static void main(string[] args) {

//  singleton s1= new singleton(); //3.由于私有构造方法,类外无法直接new 对象

    /*singleton s1= singleton.s;

    singleton s2= singleton.s;

    system.out.println(s1==s2);*/

    //上述两行会导致能够修改s的值所以得私有成员变量

    //5.重新通过get方法获得成员变量

    singleton s1= singleton.getinstance();

    singleton s2= singleton.getinstance();

    system.out.println(s1==s2);

}

 

}

/*

 * 饿汉式

 */

class singleton{

    //1.私有构造方法,类外无法直接new 对象,其他类无法访问该方法

    private singleton() {

    }

    //2.创建本类对象

//  public static singleton s =new singleton();//会导致能够修改s的值所以得私有成员变量

    private static singleton s =new singleton();

    //4.对外提供公共的访问方法get方法

    public static singleton getinstance() {

       return s;

    }

}

第三章懒汉式(单例的延迟加载,用的时候再创建对象)

/*

 * 懒汉式:单利模式的延迟加载模式

 * 会有安全隐患

 */

class singleton2 {

    //1.创建本类对象,但不实例化

    private static singleton2 s;

    //2.私有化构造方法

    private singleton2 () { 

    }

    //3.对外提供公共的访问方法

    public static singleton2 getinstance() {

       if(s==null) {

           //多线程情况下,当线程1进入if后等待,cpu使用权被线程2抢去了也进入了if判断语句那么最终会造成多个对象被创建出来

           //所以懒汉式一般不使用

           s=new singleton2();

       }

       return s;

    }

}

第四章饿汉式和懒汉式的区别

  1. 饿汉式是空间换时间,在服务器启动的时候就创建了对象
  2. 懒汉式是时间还空间,在用的时候再创建对象,但是不推荐本模式
  3. 在多线程访问时,饿汉式不会创建多个对象,懒汉式有可能会创建多个对象

第五章单例模式的第三种方法final

class singleton3 {

    //1.创建本类对象,但不实例化

    public static final singleton3 s= new singleton3();

    //2.私有化构造方法

    private singleton3 () { 

    }

    //3.对外提供公共的访问方法

    public static singleton3 getinstance() {

       return s;

    }

}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网