设计模式-单例模式

一:什么是设计模式:是一套被反复使用,多人知晓的,经过分类编目的,代码设计经验的总结

二:使用设计模式的目的:为了可重用代码,让代码更容易让他人理解,保证代码的可靠性

1.单例模式:

1.单例模式目的:保证了应用程序中某个对象的实例有且只有一个,比如配置文件,缓存,日志对象等

2.单例模式的分类:

1.饿汉模式:

1.实现步骤:

1.自定义一个私有化的构造函数,不允许外部可以直接创建对象实例

2.创建一个使用private static修饰的唯一实例

3.为创建的唯一实例对象提供外部可以调用他的方法,也就是get方法

2.代码实现:

public class Singleton {

//1.将该类的构造方法私有化,不允许外部直接创建对象

private Singleton(){


}

//2.在该类的内部创建一个唯一实例,这里用static修饰是因为可以在其他类中同过类名.的方式访问到创建的实例

//private static Singleton instance = new Singleton();

//2.一般为了安全起见,一般会把我们的类成员变量私有化,所以要为该实例创建外部可以调用他的方法,也就是第三步

private static Singleton instance = new Singleton();

//3.为私有化的实例提供外部可以调用他的方法,也就是提供了一个get方法

public static Singleton getInstance() {

return instance;

}

}

3.总结:在类中创建一个唯一实例,该实例在类加载的时候就会实例化

2.懒汉模式:

1.实现步骤:

1.私有化共造方法,不允许外部直接创建对象

2.声明一个使用private static修饰的唯一实例,而不是创建

3.提供外部可以调用的方法,注意的是这里要进行判断唯一实例是否为空,因为第二部只是声明了一个实例,而不是创建

2.代码实现:

public class Singleton2 {

//1.将该类的构造函数私有化,不允许外部直接创建对象

private Singleton2(){


}

//2.声明一个唯一实例,而不是创建

private static Singleton2 singleton;

//3.为创建的唯一实例提供外部可以调用的方法

private static Singleton2 getSingleton(){

//判断唯一实例是否为空,如果为空则创建一个实例,不为空则直接返回该实例

if(singleton==null){

singleton = new Singleton2();

}

return singleton;

}

}

3.总结:声明一个唯一实例,类在加载的时候不会实例化,而是在具体调用的时候创建

3.饿汉模式和懒汉模式的区别:

1.类加载速度:因为饿汉模式在类加载时就实例化了一个对象,所以类加载速度较慢,而懒汉模式则是在调用对象时才实例化唯一实例,所以类加载速度比较快

2.获取对象速度:饿汉模式获取对象时比较快,因为在类加载时已经实例化了,而懒汉模式在获取对象时比较慢,因为对象在获取时被实例化

3.线程安全:饿汉模式是线程安全的,懒汉模式是线程不安全的

4.补充:因为上面的懒汉模式中的get方法会造成线程不安全,所以要在get方法加上synchronized




期末大作业基于python的足球运动员数据分析源码+数据集(高分项目),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于pyth
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值