java 单例模式讲解
来源:互联网 发布:apk编程自动发短信 编辑:程序博客网 时间:2024/05/29 09:00
算是我的第一篇博客吧,之前一直也想要些,但是却一直停在了想写的这一阶段,今天决定写一篇关于单例模式的博客,既可以总结加深印象,提高个人技术,也是宣称程序员之路的正式开始吧,如果能够帮助其他人,就更好了,废话不多说,开始吧。
单例模式,顾名思义,举个栗子,就是只有一个栗子可以吃,哈哈开个玩笑。
下面进入正题(貌似已经开始过了,各位看官假装没看见)
单例设计模式是一种创建型模式,指某个类在使用Singleton模式的时候,则在这个类被创建后,只能产生一个实例对象供外部来访问使用,并且会提供一个全局的访问点。
其中核心点如下
1. 将采用单例设计模式的类的构造方法私有化(用private修饰),不允许其他类直接访问。
2. 在其内部产生该类的实例化对象,并将其封装成private static 类型。
3. 定义一个静态方法返回该类的实例。
/** * 方法一 * 单例模式的实现:饿汉式,线程安全 但效率比较低 */ public class Test {//定义一个私有的构造方法private Test() {}//将自身的实例对象设置为一个属性,并加上Static和final修饰private static final Test test = new Test();//静态方法返回类的实例public static Test getInstance(){return test;}}优点:写起来简单,不存在多线程同步问题,避免了synchorized造成的性能优化问题。
缺点:
当这个类被加载时候,会初始化static test,静态变量被创建并分配内存空间,从此以后,这个static的test会一致占据着内存,即便没有用这个实例,zhi有当类被卸载销毁的时候,静态变量才会被摧毁,并释放所有的内存,因此某些特定的条件下会消耗内存。
public class Test {
//方法二
//懒汉式,线程不安全//定义一个私有的构造方法,防止通过new Test去实例化。private Test() {}//定义一个Test类型的变量(不初始化,因为后面要判断生成)private static Test test;//定义一个静态方法(调用时再初始化,但多线程访问时,可能造成重复的初始化问题)public static Test getInstance(){if(test == null){test = new Test();}return test;}}优点:当Test被加载的时候,test并没有被分配空间,因为是空的,只有当运行了getInstance的时候,才会创建test。
缺点:在实际运行中可能会出现多个test的实例。
0 0
- java 单例模式讲解
- 单例模式讲解
- 单例模式讲解
- 单例模式讲解
- java单态模式讲解
- java单态模式讲解
- JAVA中的工厂模式和单例模式讲解
- java单例讲解
- 单利模式android,java中的单例模式。简单讲解单例模式
- PHP单例模式讲解
- 单例设计模式讲解
- 单例模式--实例讲解
- 单例模式讲解应用
- 单例模式进一步讲解
- 深入浅出讲解单例模式(java实现)
- 单例模式懒汉式与饿汉式java讲解
- 【转载】java中的单例模式详细讲解
- 设计模式之单例模式讲解
- 【物联网】使用TI的Bluetooth®低能耗解决方案来区分您的HomeKit产品
- 《ACM程序设计》书中题目B 第二题 fatmouse的语言
- UITextField textInputView: message sent to deallocated instance
- JavaScript判断一个变量是对象还是数组
- 通达OA二次开发 小飞鱼工作流超级修改程序的开发(图文)
- java 单例模式讲解
- Binary String Matching
- K
- python学习笔记(四):字符串(一)
- Head First设计模式学习笔记-------(11)组合模式
- 第5天学习
- Android防止页面跳转后EditText自动获取焦点
- opencv学习之VideoCapture类
- 开源 | 让老司机告别快进,Miles Deep使用CNN截取色情视频的关键部分