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;

}

为什么有饿汉式还会有懒汉式?

原因就是对了面试,因为面试都是考懒汉式,因为要考虑到了多线程安全问题,使程序更加严谨。

实际开发中用饿汉式,因为在考虑多线程时会比较安全,懒汉式的解决安全问题的方法,双重判断,加入锁。
总结:

饿汉式:一上来就对对象初始化。

浪费一点点内存,因为不调用也执行嘛。
懒汉式:对象调用方法时,才初始化,也叫做对象的延时加载。

一点点内存都省,因为只有调用才占内存嘛。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。