【Java】6.3 类成员

一个Java类中只能包括:成员变量、方法、构造器、初始化块、内部类(包括接口、枚举)

单例类

单例类:某些时候要为某一个类仅允许创建一个实例(注释1)

要实现单例类

  1. 构造器不能暴露,用private修饰,否则就可以创建多个实例
  2. 要暴露一个方法,用public修饰,让这个方法去创建实例。由于程序必须通过该方法来获取实例,所以在调用该方法之前,肯定没有实例(这个时候要用过一个判断实例是否为null),因此只能通过类来调用 —— 该方法必须用static修饰(注释2
  3. 使用静态field来缓存“已有的实例”,每次在获取实力之前,先判断是否能已有“缓存”实例,如果没有缓存过,就创建 ;否则直接返回“缓存”的实例
class Singleton{
	//使用一个类变量来缓存曾经创建的实例
	private static Singleton instance;
	//隐藏构造器
	private Singleton() {
		
	}
	//创建一个静态方法,以便可以让类来调用,用于返回Singleton实例
	//该方法可以追加自定义控制,保证只产生一个Singleton对象
	public static Singleton getInstance() {
		//如果instance为null,表明不存在instance对象
		//若果instance不为null,表明已经存在了instance对象,就创建一个instance对象
		if(instance == null) {
			instance = new Singleton();
		}
		return instance;
	}
	
}
public class SingletonTest {
	public static void main(String[] args) {
		//对于静态变量,要用静态类来调用方法来实现
		//因为没有构造器,所以也不能new
		Singleton s1 = Singleton.getInstance();
		Singleton s2 = Singleton.getInstance();
		//已知用==来判断类型时,会判断是否为用一个对象
		System.out.println(s1==s2);  //会输出true,所以为同一个对象
	}
}

【注释1】频繁穿件对象、回收对象会带来系统的开销问题,导致系统性能下降

【注释2】因为在调用方法之前还不存在对象,所用用该方法的不可能是对象,只能是类。又因为静态变量不能访问非静态变量,所以,方法必须由static修饰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_之桐_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值