本文转自互联网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; } }