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运行,根据说明讲解细细体会。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 海思hi3516ev100开发板_海思V200

    海思hi3516ev100开发板_海思V2001安装ubunu14我的ubuntu14如下#uname-aLinuxubuntu4.4.0-142-generic#168~14.04.1-UbuntuSMPSatJan1911:26:28UTC2019x86_64x86_64x86_64GNU/Linux2软件包安装步骤1.配置默认使用bash执行sudodpkg-recon…

  • 独立成分分析(Independent Component Analysis,ICA)模型介绍

    独立成分分析(Independent Component Analysis,ICA)模型介绍目录独立成分分析(IndependentComponentAnalysis,ICA)模型介绍1历史背景2ICA基本模型3独立与不相关独立成分分析(IndependentComponentAnalysis,ICA)模型介绍你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基…

  • 详细阐述基于时间的反向传播算法(Back-Propagation Through Time,BPTT)「建议收藏」

    详细阐述基于时间的反向传播算法(Back-Propagation Through Time,BPTT)「建议收藏」上一节我们说了详细展示RNN的网络结构以及前向传播,在了解RNN的结构之后,如何训练RNN就是一个重要问题,训练模型就是更新模型的参数,也就是如何进行反向传播,也就意味着如何对参数进行求导。本篇内容就是详细介绍RNN的反向传播算法,即BPTT。首先让我们来用动图来表示RNN的损失是如何产生的,以及如何进行反向传播,如下图所示。上面两幅图片,已经很详细的展示了损失是如何产生的,以及…

  • 毕业设计——基于小程序云开发的校园二手交易平台(附源码)

    毕业设计——基于小程序云开发的校园二手交易平台(附源码)本系统基于微信小程序云开发,采用小程序原生框架,不需要后端开发,数据库和CMS云开发全帮你搞定,对后端开发能力薄弱的同学超友好的有木有,只要你学过HTML+CSS+JS就能实现所有功能。一、功能介绍使用该系统的角色有两个,分别是用户和管理员,用户通过微信小程序进入该系统,该角色功能主要由七个模块组成,分别是用户登录、搜索商品、发布商品、管理商品、购买商品、收藏商品、以及评论留言。管理员通过小程序自带的内容管理平台实现后台管理,可对商品信息、留言板以及用户等数据进行增、删、改、查操作。二、业务流程图

  • Windows 网络通信套接字技术

    Windows 网络通信套接字技术一、TCP/IP介绍1、TCP/IP体系结构TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是提供传输 层服务,而IP则是提供网络层服务。TCP/IP协议包括如下协议,其结构如图所示。IP: 网间协议(Internet Protocol) 负责主机间数据的路由和网络上数据的存储。 同时为ICMP,TCP,UDP提供分组发送服务。用户进程通常不需要涉及这一层。ARP: …

  • 博弈论基础mooc答案_博弈论考试题及答案

    博弈论基础mooc答案_博弈论考试题及答案1、“博弈的本意是什么?A、摔跤B、下棋C、赌博D、游戏参考答案:B2、古时“弈”字,就是指A、跳棋B、象棋C、五子棋D、围棋参考答案:D3、按照博弈方是否达成有约束力的协议,可以分为()A、理性博弈和非理性博弈B、完全信息博弈和不完全信息博弈C、动态博弈和静态博弈D、合作博弈与非合作博弈参考答案:D4、囚徒困境的例子属于()的典型A、非合作博弈B、合作博弈C、理性博弈D、动态博弈参考答案:A5、“石头剪刀布游戏,属于()。A、贯序博弈B、动态博弈…

    2022年10月15日

发表回复

您的电子邮箱地址不会被公开。

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