/*
单例设计模式(singleton):将类限制为单一的实例,保证一个类在内存中只有一个对象。
单例设计模式的步骤:
饿汉单例设计模式
1. 私有化构造函数。
2. 声明本类的引用类型变量,并且使用该变量指向本类对象。
3. 提供一个公共静态的方法获取本类的对象。
懒汉单例设计模式:
1. 私有化构造函数。
2. 声明本类的引用类型变量,但是不要创建对象,
3. 提供公共静态 的方法获取本类 的对象,获取之前先判断是否已经创建了本类 对象
,如果已经创建了,那么直接返回对象即可,如果还没有创建,那么先创建本类的对象,
然后再返回。
饿汉式:类一加载就创建对象
懒汉式:用的时候,才去创建对象
开发:饿汉式(是不会出问题的单例模式)
面试:懒汉式(可能会出问题的单例模式)
A:懒加载(延迟加载)
B:线程安全问题
a:是否多线程环境 是
b:是否有共享数据 是
c:是否有多条语句操作共享数据 是
*/
//饿汉单例设计模式
public class Student {
// 构造私有
private Student() {
}
// 自己造一个
// 静态方法只能访问静态成员变量,加静态
// 为了不让外界直接访问修改这个值,加private
private static Student s = new Student();
// 提供公共的访问方式
// 为了保证外界能够直接使用该方法,加静态
public static Student getStudent() {
return s;
}
}
public class StudentDemo {
public static void main(String[] args) {
// 通过单例如何得到对象
Student s1 = Student.getStudent();
Student s2 = Student.getStudent();
System.out.println(s1 == s2);
System.out.println(s1); // null,cn.itcast_03.Student@175078b
System.out.println(s2);// null,cn.itcast_03.Student@175078b
}
}
//懒汉单例设计模式
class Single2{
//私有化了构造函数
private Single2(){}
//声明本类的引用类型变量,不创建本类的对象
private static Single2 s= null;
public synchronized static Single2 getInstance(){
if(s==null){
s = new Single2();
}
return s;
}
}
3.使用静态内部类实例化单例。 把实例化对象放在一个静态内部类里边。
简述单例设计模式
猜你喜欢
转载自blog.csdn.net/Smile_Sunny521/article/details/89538742
今日推荐
周排行