友情提醒
先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。
一、什么是设计模式
1)设计模式简述
设计模式就是设计出来的固定问题的解决方法,描述了在软件设计过程中的一些不断重复发生的问题和解决方案。遇到类似问题的时候可以直接使用现成的模式方案。
2)什么是单例设计模式
①单例模式中一个类只能有一个实例,由该单例类自行实例化并向整个系统提供这个实例。
3)单例设计模式思路
①要保证单例,就不能让外界随便创建对象,就需要将构造函数私有化,让外界无法访问构造函数。
②外界无法创建就只能在本类中创建这个唯一的对象。
③在本类创建对象需要成员变量接收这个对象,为了不让外界访问这个成员变量所以也用private修饰,在使用这个变量之前还没有对象,所以这个变量必须是静态的用static修饰。
④提供方法访问,只有访问这个方法之后才会有对象,所以这个方法应该是静态的
二、饿汉式
1)饿汉式单例设计模式的特点
①饿汉式模式的特点是类一旦加载就创建一个单例,保证在调用 getInstance (获取实例)方法之前单例就已经存在了。(比较饿,没喊就迫不及待的创建了)。
②好处:就算在多线程环境下,也一定可以保证对象是唯一的。弊端:创建比较早,有浪费内存的现象。文章来源:https://www.toymoban.com/news/detail-443676.html
2)实现一个饿汉式单例设计
public class Test1{
//1、私有化本类所有的构造方法
private Test1(){}
//2、直接在本类中创建唯一对象
private static Test1 t1 = new Test1();
//3、提供外界获取唯一对象的方法(公共的、静态的)
public static Test1 getInstance(){
return t1;
}
}
三、懒汉式
1)懒汉式单例设计模式的特点
①懒汉式模式的特点是类加载时没有生成单例,只有当第一次调用 getlnstance (获取实例)方法 时才去创建这个单例。(比较懒别人喊一次才动一次?)。
②好处:不存在浪费内存的问题,弊端:在多线程环境下,可能不能保证对象是唯一的文章来源地址https://www.toymoban.com/news/detail-443676.html
2)实现一个懒汉式单例设计
public class Test2{
//1、私有化本类所有的构造方法
private Test2(){ }
//private和static修饰的成员变量
private static Test2 t2;
//3、提供外界获取唯一对象的方法(公共的、静态的)
public static Test2 getInstance(){
if(t2 == null){
//2、在本类中创建唯一对象
t2 = new Test2();
}
return t2;
}
}
到了这里,关于Java中单例(单态、原子)设计模式(饿汉式/懒汉式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!