单例设计模式
单例模式 是一种保证同一个类中只有一个对象和一个对象调用的设计模式 单例设计模式分为 饿汉式和懒汉式
1、饿汉模式:饿汉模式指的是 在同一个类中 只创建一个对象和一个对象调用,一但有类的加载则会触发对象的创建
public class domo{
public static void main(String[] args){
test01.getTest01();//调用方法会触发类的初始化 从而完成对象的创建工作
}
}
class test01{
private String name;
//1、构造方法私有化 防止使用new 关键字调用构造器
private test01(String name){
this.name=name;
}
//2、在类内部创建对象
private static test01 te 01 =new tese01(“张三”);
//3、在类中提供一个方法用于返回对象
public static test01 getTest01(){
return te01;
}
}
2、懒汉模式:
懒汉模式指的是 在类中创建一个对象的静态属性,
但是不创建对象,当使用对象时再去创建(类的加载不会导致对象的创建);
public class{
public static void main(String [] args){
//使用对象的时候才进行对象的创建,但是类的加载不会导致对象的创建
test02.getTest02()
}
}
class test02{
private String name;
//1、构造方法私有化
private test02(String name){
this.name=name;
}
//2、定义一个对象属性但不进行对象的创建
private static test te02;
//3、提供一个方法用于返回对象
public static test02 getTest02(){
// 当调用对调用对象的时候 判断对象是否创建, 若已创建则返回,反之则创建对象并返回
if(te02 ==null){
te02 =new test02(“张三”);
}
System.out.println("对象已创建")
returnte te02
}
}
总结:
单例模式的实现步骤:
1、构造器(构造方法)私有化
2、创建对象
2.1懒汉模式的对象创建是在调用时候(在这一步只是创建了一个类的属性用于 以后对象的创建
3、提供一个方法用于返回对象;
单例设计模式中饿汉模式和懒汉模式的区别
1、 饿汉模式的对象创建是在类的初始化阶段完成的, 懒汉模式的对象创建是在使用对象的时候才创建的,类的加载阶段并不会导致对象的创建
2、饿汉模式不存在线程安全问题,懒汉模式存在线程安全问题
如:当多个线程同时访问创建对象这个方法时会导致创建多个对象从而打破了单例模式的成立条件 如下图所示:
3、饿汉模式存在资源浪费的情况,如:创建对象之后并没有使用的情况下会导致资源的浪费,懒汉模式则不存在资源浪费的问题