单例模式:
饿汉式:类一加载就创建对象
懒汉式:用的时候,才去创建对象
面试题:单例模式的思想是什么?请写一个代码体现。
答:保证类在内存中只有一个对象。
开发:饿汉式。(是不会出问题的单例模式)
面试:赖汉式。(可能会出问题的单例模式)
A:赖加载(延迟加载)
B:线程安全问题
a:是否多线程环境 是
b:是否有共享数据 是
c:是否有多条语句操作共享数据 是
package cn.itcast_03;
public class TeacherDemo {
public static void main(String[] args) {
Teacher t1 = Teacher.getTeacher();
Teacher t2 = Teacher.getTeacher();
System.out.println(t1 == t2);
System.out.println(t1);// cn.itcast_03.Teacher@6bbc4459
System.out.println(t2);// cn.itcast_03.Teacher@6bbc4459
}
}
package cn.itcast_03;
/*
* 单例模式:
* 饿汉式:类一加载就创建对象
* 懒汉式:用的时候,才去创建对象
*
* 面试题:单例模式的思想是什么?请写一个代码体现。
* 答:保证类在内存中只有一个对象。
* 开发:饿汉式。(是不会出问题的单例模式)
* 面试:赖汉式。(可能会出问题的单例模式)
* A:赖加载(延迟加载)
* B:线程安全问题
* a:是否多线程环境 是
* b:是否有共享数据 是
* c:是否有多条语句操作共享数据 是
*/
public class Teacher {
// 私有构造方法
private Teacher() {
}
// 自已创建对象
// 为了让外界不能修改该对象加private修饰
private static Teacher t = null;
// 对外界提供一个访问方式
public synchronized static Teacher getTeacher() {
// t1,t2,t3
if (t == null) {
// t1,t2,t3
t = new Teacher();
}
return t;
}
}