Java设计模式之单例设计模式
设计模式:
解决某一类问题最行之有效的方法,Java中23种设计模式。
单例设计模式(Singleton):解决一个类在内存中只存在一个对象
比如对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
想要保证对象唯一:
为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象;
还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象;
为了方便其他程序对自定义对象的访问, 可以对外提供一些访问方式;
单例设计模式之饿汉式
Single类一进内存,就已经创建好了对象,简单的说就是一上来就吃。
思路:
将构造函数私有化;
在类中创建一个本类对象;
提供一个公共的访问方法,可以获取到该类对象;
步骤:
//将构造函数私有化
private Single(){}
//在类中创建一个本类对象(final关键字等下有学到,是最终的意思,呵呵)
private finla static Single single =new Single();
//提供一个公共的访问方法,可以获取到该类对象
public static Single getInstance(){
return single;
}
单例设计模式之懒汉式
对象是方法被调用时才初始化,也叫对象的延时加载
Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。
步骤:
private Single(){}
private static Single single =null;
public static Single getInstance(){
if(single==null){
synchronized(Single.class){
if(single==null)
single =new Single();
}
}
return single;
}
为什么有饿汉式还会有懒汉式?
原因就是对了面试,因为面试都是考懒汉式,因为要考虑到了多线程安全问题,使程序更加严谨。
实际开发中用饿汉式,因为在考虑多线程时会比较安全,懒汉式的解决安全问题的方法,双重判断,加入锁。
总结:
饿汉式:一上来就对对象初始化。
浪费一点点内存,因为不调用也执行嘛。
懒汉式:对象调用方法时,才初始化,也叫做对象的延时加载。
一点点内存都省,因为只有调用才占内存嘛。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。