Java单例设计模式(实现Java的一个类只有一个对象)
来源:互联网 发布:nginx 泛解析 编辑:程序博客网 时间:2024/05/19 03:29
单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类。核心便是希望一个类只有一个对象。
以下就是实现单例类:
class Single{ private static Single s = new Single(); //声明本类的引用类型变量,并且使用该变量指向本类对象。使用static关键字使得s在内存中只有一份。 private Single(){} //声明私有构造函数,使得在本类外不能实例化本类对象 public static Single getSingleObject(){ return s; } //提供一个公共的静态的方法,可以返回这个唯一的对象。}class Demo{ public static void main(String []args){ Single s1 =Single.getSingleObject(); Single s2 =Single.getSingleObject(); System.out.Println("是一个对象吗?"+(s1 == s2)); //==用来判断这两个对象的内存地址是否一样,如果一样,说明是同一个对象。 }}
以上的单例设计模式称为饿汉模式,意思是不管需不需要这个对象,但在类文件加载的时候这个对象已经被实例化了,如果这个类对象至始至终都没有使用,则这个类对象就会浪费内存空间,因此有了以下的懒汉模式,也就是在使用的时候,才创建对象,代码实现如下:
class Single{ private static Single s;//声明一个该对象的引用,但不进行实例化,static不初始化时,s默认的值为null private Single(){}//保证只能在本类实例化对象 public static Single getSingleObject(){ if(s==null){ //判断该引用是否为空 s = new Single(); } return s; }}class Demo{ public static void main(String []args){ Single s1 = Single.getSingleObject(); Single s2 = Single.getSingleObject(); System.out.pringln("是同一个对象吗?"+(s1==s2)); }}
以上为懒汉单例设计模式的实现,但是该模式有个缺陷,就是在多线程访问的时候有一定的安全隐患。所以目前还是推荐使用饿汉模式。
0 0
- Java单例设计模式(实现Java的一个类只有一个对象)
- C++设计模式5--单例模式Singleton--当前对象只有一个实例
- C++设计模式5--单例模式Singleton--当前对象只有一个实例 .
- 【java设计模式】单例设计模式案例:工厂加工零件(对象是工厂,所以就需要创建一个工厂的类)
- 【java基础】单例设计模式:保证一个类在内存中的对象唯一性
- java编写一个延迟加载的单例设计模式
- 黑马程序员:单态设计模式static(使类在内存只有一个实例对象)
- python实现单例模式,从始至终都只有一个实例
- java单例模式的一个小结
- java单例设计模式的实现
- 单例模式--只有一个实例
- Java基础----一个单例模式的类举例
- Java使用double check(双重检查)实现单例模式的一个小细节
- 使用java Reflection机制使单例模式不再只有一个对象的实例
- 单例模式确保某个类只有一个实例
- Java设计模式:单例模式-独一无二的对象
- 单例设计模式(三)-------简单实现一个单例设计模式
- 【Java】【TIJ】构建一个类:这个类只有一个对象(实例)
- servlet实现的一个购物车展示功能,待完善(添加,删除购物车等操作)
- retrofit开源框架github源码和详解文档链接地址
- Java & json
- 数据结构之对线性表的操作(C语言版)
- crontab 保持单进程执行
- Java单例设计模式(实现Java的一个类只有一个对象)
- 石子合并(区间型动规)
- 进程间通信方式总结
- 齐博建站指南
- 【杭电】[5363]Key Set
- iOS8 UICollectionView横向滑动demo
- 第一篇博文,不知道应该怎么开始,以测网速仪表盘开始
- warning: conflicting types for built-in function 'puts'
- JAVA实践最小生成树---kruskal算法