先说下 什么是设计模式,设计模式就是前人总结的开发经验,针对某种需求不同的程序设计模式 。
单例模式,就是在程序运行过程中,对外只提供一个 实体对象,我们首先想到的就是外部不能创建该类的对象,在该类内部只创建一个实例对外提供,那么就要满足两个条件,一是构造器私有化,这样外部就不能调用new方法创建,二是该单例对象不能用类的对象调用,就只能是静态的。
代码示例一:
class User {
private String name;
private int age;
private static User user= new User();
private User() {
}
public static User getUser() {
return user;
}
}
单例模式是一种设计思想,代码实现方式不止一种,示例一这样的模式,在类加载时就创建了实例,如果我们不用就会造成资源浪费,我们把代码修改为调用的时候再去创建。
代码示例二:
class Student {
private String name;
private int age;
private static Student stu = null;
private Student() {
}
public static Student getStudent() {
if (stu != null)
stu = new Student();
return stu;
}
}
总结两种实现方式:单例分为 懒汉式 饿汉式 , 懒汉式 延迟加载 节省内存,懒汉式 有 线程安全的 风险 ,在多线程情况下 可能会 创建多个对象。那么我们就要对懒汉式进行改造,加上同步代码块,使懒汉单例模式变成线程安全的结构。
class Student {
private String name;
private int age;
private static Student stu = null;
private Student() {
}
public static Student getStudent() {
synchronized (Student.class){
if (stu != null)
stu = new Student();
return stu;
}
}
}