java单例模式案例,及单例体现的关键

java单例模式案例,及单例体现的关键

特点:1,单例类只能有一个实例

2,单例类必须自己创建自己的唯一实例

3,单例类必须给所有其他对象提供这一实例

以打印机为例,一台计算机可以连接多台打印机,但每次打印只能有一台打印机打印一份文件.单例模式就是如此,保证只有一个出口,避免政出多头.

案例:

单例类:

package singleTon;


public class Singleton1 {
	private String name;
	private static Singleton1 singleton1=null;
	
	private Singleton1(){
		
	}
	public static Singleton1 newInstance(){
		if(singleton1==null){
		singleton1=new Singleton1();
		}
		return singleton1;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

测试类:

package singleTon;

public class Test {

	public static void main(String[] args) {
		Singleton1 singleton1=Singleton1.newInstance();
		singleton1.setName("name1");
		System.out.println(singleton1.getName());
		Singleton1 singleton12=Singleton1.newInstance();System.out.println(singleton12.getName());
		singleton12.setName("name2"); 
		System.out.println(singleton1.getName());
		System.out.println(singleton12.getName());
		System.out.println(singleton1==singleton12);
	}

}

说明:直接看测试类,第一步调用newInstance()方法,进入到Singleton1类中,判断静态变量singleton1是否为null,为null则new 对象,回到测试类,给name赋值,打印为“name1”.

第二步,接着再次执行newInstance()方法,进入到Singleton1类中,判断静态变量singleton1是否为null.这里是为什么命名为单例模式的关键。因为第一步已经new了一次,静态变量singleton1已经不为null,因此不会再去new对象,而是直接返回到测试类,把对象singleton1赋给singleton12,所以无论后面有执行多少次newInstance()方法,所有的对象都是第一次的singleton1.

第三步,看打印的结果,分别是“name1””name2″,”name2″,”true”.

仍有疑问的朋友,可以复制代码,debug运行,根据说明讲解细细体会。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106355.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PetaLinux学习笔记 1

    PetaLinux学习笔记 1迟迟没有做底板,所以只能把Linux写到FLASH上了。还好这个FLASH够大。官方所说的有点问题,最后一句改成petalinux-package–boot–fsbl~/FTP_Folder/ax_peta/images/linux/zynq_fsbl.elf–fpga–u-boot–kernel–force再烧进去就可以跑了。手册ug821有说明,先搞清楚它…

    2025年11月1日
    5
  • 百度搜索引擎

    百度搜索引擎

    2021年10月9日
    82
  • 蓝牙脂肪秤模块测量原理

    蓝牙脂肪秤模块原理跟普通电子体重秤的原理差不多,都是利用压力传感器及芯片设计完成功能的实现。蓝牙电子秤的外形和地面有四个接触点,四个接触点那里都放着一种压力传感器,压力传感器将人体的重量转换成电信号,后经过芯片设计完成处理器AD采样,再经过换算便可以得到人体的体重。蓝牙脂肪秤模块测量体脂是通过电阻抗法测量出来的,它的具体原理是由电极片发出微弱电流,与人体形成一个闭环,通过肌肉易导电,脂肪不导电的…

    2022年4月11日
    54
  • 使用python+django+twistd 开发自己的操作和维护系统的一个

    使用python+django+twistd 开发自己的操作和维护系统的一个

    2022年1月2日
    43
  • Java字符串匹配_获取字符串

    Java字符串匹配_获取字符串文章目录一、示例二、解释1.replace()方法2.replaceAll()方法3.replaceFirst()方法4.常用的字符列表一、示例如图,都是为了替换字符串s中的”(“符号,但三种匹配方法,有三种不同的效果及写法。二、解释1.replace()方法replace()方法没有用到正则表达式,但会匹配所有的参数并进行替换2.replaceAll()方法replaceAll()方法使用的是正则表达式来匹配,而括号在正则表达式中是特殊字符,所以需要用双斜杠来进行转义,同时会匹配所..

    2022年8月21日
    6
  • 素埃里克森筛法

    素埃里克森筛法

    2021年12月17日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号