单例模式:
- 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);
}