单例设计模式
核心思想:在程序运行的过程当中,该类的对象保持有且只有一个的状态
单例分两种:懒汉式和饿汉式
单例需要满足的条件
1.不让外界创建这个对象即(构造方法需要私有化)
2.在类的内部来创建这个对象即(让这个对象只创建一次)
3.需要给外部提供一个访问可以获得该对象的方法即(提供一个get方法)
懒汉式代码:
/懒汉式(不完整 线程安全问题 双锁控制) 在类被加载的时候 不会去创建对象 只有当你 //调用了获取该类的方法时 才会创建该类对象 class SingleL{ //声明一个对象的引用 private static SingleL singleL=null; //构造方法私有化 private SingleL() { } //获取对象的方法 public static SingleL getInstance() { //判断 当这个对象不存在的时候在创建 if(singleL==null) { singleL=new SingleL(); } return singleL; }
饿汉式代码:
//饿汉式(只要该类 被加载 就会在方法区的 静态区中 创建本类对象) class SingleE{ //声明一个本类的对象 private static SingleE singleE=new SingleE(); //构造方法私有化 private SingleE() { } //对外提供一个访问的方法 public static SingleE getInstance() { return singleE; } }
实现的结果:打印了两次,为了测试单例是否只能被创建一个对象
//打印获取单例对象 两者打印的内容是一样的,说明两个是同一个对象 System.out.println(SingleE.getInstance()); System.out.println(SingleE.getInstance()); System.out.println("-------------------"); //打印懒汉模式对象 System.out.println(SingleL.getInstance()); System.out.println(SingleL.getInstance());