java中如何保证对象在内存中的惟一性

本文转自互联网java

 

刚看到这个题目的朋友第一反应确定是好奇,以后再细细思考下就会发现这个题目眼熟了。面试

就算是同一个答案,若是提问的方式不一样,设计模式

每每会对回答形成干扰或者影响,函数

上学的时候老师也说过差很少的话,学习

学过设计模式的人看到这个题目以后确定不会陌生:请描述java中单例设计模式的实现步骤,那估计就能答出来了。spa

而java中的单例模式,相信只要是你看过一些java视频教程,确定就能写出来的。设计

因此咱们在平时学习的时候要注意触类旁通,掌握其精髓,这样在面试或者工做的时候才能应对自如,长此以往,就成为了大神级别。日志

 

解决的问题:保证对象在内存中的惟一性。code


平时在开发的时候常常会遇到以下场景:多程序读取一个配置文件时,记录日志时。视频

若是建立多个对象的话,可能会引起出各类各样的问题,这时,就须要咱们保证这个对象在内存中的惟一性

java中的Runtime()方法就是单例设计模式进行设计的。


如何保证对象惟一性呢?


思考:
1,不让其余程序建立该类对象。
2,在本类中建立一个本类对象。
3,对外提供方法,让其余程序获取这个对象。


步骤:
1,由于建立对象都须要构造函数初始化,只要将本类中的构造函数私有化,其余程序就没法再建立该类对象;
2,就在类中建立一个本类的对象;
3,定义一个方法,返回该对象,让其余程序能够经过方法就获得本类对象。这样方便咱们进行控制;


代码体现:
1,私有化构造函数;
2,建立私有并静态的本类对象;
3,定义公有并静态的方法,返回该对象。

//饿汉式
class Single{
private Single(){} //私有化构造函数。
private static Single s = new Single(); //建立私有并静态的本类对象。
public static Single getInstance(){ //定义公有并静态的方法,返回该对象。
return s;
}
}

 

//懒汉式:延迟加载方式。
class Single2{
private Single2(){}
private static Single2 s = null;
public static Single2 getInstance(){
if(s==null)
s = new Single2();
return s;
}
}
相关文章
相关标签/搜索