【java基础】单例设计模式:保证一个类在内存中的对象唯一性
来源:互联网 发布:架构图制作软件 知乎 编辑:程序博客网 时间:2024/05/17 00:50
摘要:单例设计模式解决的问题就是可以保证一个类在内存中的对象唯一性,必须对于多个程序使用同一个配置信息对象时,就需要保证对象的唯一性。
单例设计模式有两个表现形式:饿汉式和懒汉式。饿汉式开发时常用,懒汉式面试时常用!!
下面是代码举例:
public class SingletonPattern {public static void main(String[] args) {Test1 t1=Test1.getInstance();Test1 t2=Test1.getInstance();t1.setNum(10);t2.setNum(25);System.out.println(t1.getNum());System.out.println(t2.getNum());}}//单例模式表现形式一[饿汉式]:类一加载对象就已经存在了。开发时常用!!class Test1{private int num;private static Test1 t=new Test1();private Test1(){}public static Test1 getInstance(){return t;}public void setNum(int num){this.num=num;}public int getNum(){return num;}}//单例模式表现形式二[懒汉式]:也叫延迟加载形式,类一加载进来,没有对象//只有调用getInstance()时才会创建对象。面试时常用!!//这种模式在多线程技术访问下有可能保证不了对象唯一性,除非用代码规避,但是会降低代码性能,所以实际开发用饿汉式多。class Test2{private int num;private static Test2 t=null;private Test2(){}public static Test2 getInstance(){if(t==null)t=new Test2();return t;}public void setNum(int num){this.num=num;}public int getNum(){return num;}}
懒汉式多线程安全问题的解决方案:
//懒汉式加入同步为了解决多线程安全问题。加入双重判断是为了解决效率问题。class Single{private static Single s = null;private Single(){}public static Single getInstance(){if(s==null){synchronized(Single.class){if(s==null)//-->0 -->1s = new Single();}}return s;}}
上面代码中t1和t2其实都是Test中的t对象,地址都一样,因此最后结果都是25。
阅读全文
0 0
- 【java基础】单例设计模式:保证一个类在内存中的对象唯一性
- 黑马程序员:单态设计模式static(使类在内存只有一个实例对象)
- 单例模式--常用保证内存new 的对象唯一
- 能否写一个单例模式,并且保证实例的唯一性?
- OC基础-类对象在内存中的存储方式13
- 查看java对象在内存中的布局
- Java 对象在内存中的存储
- java对象在内存中的状态
- java对象在内存中的分配
- Java对象在内存中的表示
- 查看Java对象在内存中的布局
- 单例模式--能够保证一个类仅有唯一的实例,并提供一个全局访问点。
- JAVA中的基础---设计模式之单例模式
- 设计模式之一:单例模式—确保对象的唯一性
- Java单例设计模式(实现Java的一个类只有一个对象)
- OC基础-06 对象在内存中的存储细节
- 设计一个只能创建一个唯一实例的类——单例模式
- 对象在内存中的状态
- Android指示器的使用。
- 如何让App首屏启动更快 -- httpdns持久化缓存方案
- 实验2
- HDU 6213 模拟
- 使用深度学习进行生存分析
- 【java基础】单例设计模式:保证一个类在内存中的对象唯一性
- select框默认选项为空白
- 怎样获得C币
- MATLAB R2016a Builder JA
- 《Linux系统管理》
- 专访阿里云闵万里:云上逐鹿,ET大脑要做行业化、垂直化的创新运用
- C数据结构-链栈
- 小故事,大道理
- 解密MySQL备份恢复的4种方法(转)