JAVA_SE基础——38.单例设计模式

本文继续介绍23种设计模式系列之单例模式。html

咱们在javaSE的基础学习中,会讲到:单例设计模式、模板设计模式、装饰者设计模式、观察者设计模式、工厂设计模式  java


我之后随着水平的提升,我会专门开个分类写设计模式的。如今请原谅个人知识面有限……面试


设计模式→中的    “模式” 二字是什么意思。。设计模式


模式:模式就是解决 一类 问题的固定步骤 。安全

模式的概念最先起源于建筑行业....


建房子的步骤都是同样子:
多线程


打地基-----> 浇柱子------->盖楼面--------->砌墙--------->封顶---->装修-----入住函数


单例设计模式:保证一个类在内存中只有一个对象。学习


首先来明确一个问题,那就是在某些状况下,有些对象,咱们只须要一个就能够了,测试

好比,一台计算机上能够连好几个打印机,可是这个计算机上的打印程序只能有一个,spa

这里就能够经过单例模式来避免两个打印做业同时输出到打印机中,

即在整个的打印过程当中我只有一个打印程序的实例。简单说来,单例模式(也叫单件模式)的做用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(固然也能够不存在)。


单例设计模式有两种: (可是写法不少种)

饿汉单例设计模式
1. 私有化构造函数。
2. 声明本类的引用类型变量,而且使用该变量指向本类对象。
3. 提供一个公共静态的方法获取本类的对象。

懒汉单例设计模式:
1. 私有化构造函数。
2. 声明本类的引用类型变量,可是不要建立对象,
3. 提供公共静态 的方法获取本类 的对象,获取以前先判断是否已经建立了本类 对象
,若是已经建立了,那么直接返回对象便可,若是尚未建立,那么先建立本类的对象,
而后再返回。

推荐使用: 饿汉单例设计模式。  由于懒汉单例设计模式会存在线程安全问题,目前还不能保证一类在内存中只有一个对象。 可是也要熟悉懒汉单例模式,由于面试常常会面这个。。



测试代码1:(饿汉单例模式):

//饿汉单例设计模式 ----> 保证Single在在内存中只有一个对象。
class Single{

	//声明本类的引用类型变量,而且使用该变量指向本类对象
	private static	Single s = new Single();

	//私有化构造函数
	private Single(){}

	//提供一个公共静态的方法获取本类的对象
	public	static  Single getInstance(){
		return s;
	}
}
class Demo2 
{
	public static void main(String[] args) 
	{
		Single s1 = Single.getInstance();
		Single s2 = Single.getInstance();
		System.out.println("是同一个对象吗?"+ (s1==s2));
	}
}

运行结果:




测试代码2:(懒汉单例模式):

//饿汉单例设计模式 ----> 保证Single在在内存中只有一个对象。
class Single{

	//声明本类的引用类型变量,而且使用该变量指向本类对象
	private static	Single s = null;

	//私有化构造函数
	private Single(){}

	//提供一个公共静态的方法获取本类的对象
	public	static  Single getInstance(){
		if(s==null){
			s = new Single();
		}
		return s;
	}
}
class Demo2 
{
	public static void main(String[] args) 
	{
		Single s1 = Single.getInstance();
		Single s2 = Single.getInstance();
		System.out.println("是同一个对象吗?"+ (s1==s2));
	}
}

运行结果:




懒汉式单例模式 ……关于线程问题也要等我再深刻学习我才懂(我本身都没学到多线程)

反正这篇blog 就看成是入门文档了,不能当最终版本的,由于个人知识面有限,抱歉。关于单列模式的东西 目前我也才学到这些,期待个人文章的人,能够粉我,到时我会专门开个分类来详细的写设计模式的 。。奋斗

相关文章
相关标签/搜索