单例模式:
- 1、单例类只能有一个实例。
- 2、单例类必须自己创建自己的唯一实例。
- 3、单例类必须给所有其他对象提供这一实例。
应用场景:
比如 MP3 切歌页面 ,不能换首歌就换个页面 < || > 所以我们这里用到了单例模式 再比如 一个班级只有一个班主任 不能上一节课换一个班主任
饿汉式:
package com.hainiu.designMode; public class EagerSingleton { // 饿汉式 private static EagerSingleton es = new EagerSingleton(); //创建对象 private EagerSingleton(){ } //对外提供公共的访问方式 public static EagerSingleton getEagerSingleton(){ return es; } // public static void main(String[] args) { EagerSingleton dd = EagerSingleton.getEagerSingleton(); EagerSingleton d = EagerSingleton.getEagerSingleton(); System.out.println(dd); System.out.println(d); } }
创建并封装一个static 属性 的 EagerSingleton 对象 在海没有调用的时候首先创建了一个静态的对象 然后给出访问的方法
懒汉式:
不用的时候不去new这个实例,用到才new
// private static EagerSingleton es = null; private EagerSingleton(){ } //对外提供公用的访问方法 public static EagerSingleton getEagerSingleton(){ if(es==null){ es = new EagerSingleton(); } return es; } public static void main(String[] args) { EagerSingleton dd = EagerSingleton.getEagerSingleton(); EagerSingleton d = EagerSingleton.getEagerSingleton(); System.out.println(dd); System.out.println(d); }