单例设计模式讲解

单例设计模式

确保在内存中只有一个对象,该实例必须自动创建,并对外提供

分类:

饿汉式

懒汉式

饿汉式:

类加载的时候创建对象

懒汉式

         要用的时候创建对象

/**
*饿汉式:
 *单例是在内存中只有一个对象
 *所以是不允许外界创建对象的,所以构造方法是私有的,
 *因为外界不能创建对象,所以。我只能在在对象里面创建对象,在通过方法来调用这个对象,因为外界不能创建对象,
 *所以,只能通过类名来调用这个对象,所以这个方法是静态的。因为返回值是静态的,所以,创建的对象也应该是静态的,
 *因为不允许外界直接修改这个对象的值,所有,这个对象必须私有化,
 *饿汉式创建对象结束
 */
public class StudentDemo {
public static void main(String args[]){
//	调用方法创建两个对象
	Student s1 = Student.getStudent();
	Student s2 = Student.getStudent();
//	比较两个对象的值
	System.out.println(s1==s2);
}
}
 class Student {
//	 构造方法私有,不允许外界创建对象、
	private Student(){
	}
//	对象私有,不允许外界改变,同时静态,表示值创建一次、
	private static Student s = new Student();
//	创建方法,是外界直接调用,静态表示这个通过类名调用
	public static Student getStudent(){
//		返回这个对象
		return s;
	}
}

/**
 *懒汉式:
 *不管是饿汉式,还是懒汉式,构造方法都需要私有,因为都是不允许外界创建对象的,所有首先是构造方法私有化
 *第二是,根据懒汉式的原则的,是要用对象的时候才创建对象的,所有,这个比就需要在创建方法的时候创建对象,但是,
 *这个对象是需要下次调用的,不然每一次调用这个方法的时候,都会创建一个对象,所以,我们需要把这个对象定义在方法外面
 *同时赋值为null,同时定义为静态,在类的加载时创建对象,然后需要我们需要判读这个对象,是不是等于null如果是等于,
 *代表这个对象没有被创建,我们需要创建对象,如果不是null,则直接返回这个对象就可以。
 */
public class TeacherDemo {
	public static void main(String[] args){
	//	创建两个对象
		Teacher t1 = Teacher.getTeacher();
		Teacher t2 = Teacher.getTeacher();
	//	判断对象是否相等
		System.out.println(t1==t2);
	}
}

public class Teacher {
//	构造方法私有、
	private Teacher(){
	}
//	定义对象为null
	static Teacher t = null;
//	外界调用这个方法,创建对象
	public static Teacher getTeacher(){
//		判断这个对象是不是为空,如果为空,创建对象
		if(t == null){
			t = new Teacher();
		}
//		否则,直接返回
		return t;
	}
}

总结:

单例,就是在内存中只有一个内存地址,外界不能创建对象,所有对象只能通过方法创建,这样,才能保证这个对象的地址唯一,


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值