java单态模式_Java单态模式
Java的單態(tài)模式 Singletom
作用:保證在Java應(yīng)用程序中,一個(gè)Java類只有一個(gè)實(shí)例存在;所以一般單態(tài)類會(huì)提供一個(gè)返回該類實(shí)例的方法。提供一個(gè)對(duì)對(duì)象的全局訪問指針。
優(yōu)點(diǎn):節(jié)省內(nèi)存,限制類的個(gè)數(shù),有利于Java的垃圾回收機(jī)制(Garbage Collection );
缺點(diǎn)及注意點(diǎn):
1、多線程情況下,懶加載模式可能導(dǎo)致線程不安全因素,例如:同時(shí)有兩個(gè)線程同時(shí)調(diào)用getInstance方法獲取實(shí)例時(shí),可能兩個(gè)線程同時(shí)進(jìn)入if語句判斷塊,此時(shí)類尚未被實(shí)例化,那么將同時(shí)得到兩個(gè)不同的實(shí)例(此注意點(diǎn)比較容易避免,獲取實(shí)例時(shí)使用同步sync就可以很好的解決)。
2、當(dāng)單例類被多個(gè)classloader加載的情況下,可能獲得多個(gè)單例類的實(shí)例(此種情況可能比較難避免,這需要使所有的類使用相同的類加載器加載)。
3、當(dāng)單例類實(shí)現(xiàn)了序列化接口(Serializer)時(shí),我們?nèi)绻麑?duì)象序列化,并反序列化得到實(shí)例時(shí),這個(gè)實(shí)例將是一個(gè)新的實(shí)例,而不是序列化之前的實(shí)例(在這種情況下,需要在此類中添加readResolve方法,將返回對(duì)象設(shè)置為當(dāng)前實(shí)例,否則會(huì)獲得一個(gè)不同意序列化之前的類)。
具體實(shí)例見類 ?~~ SingletonDemo.java ~~
/**
* @author Verphen
* @date 2013-9-9 下午11:23:42
*/
package org.verphen.designMode;
public class SingletonDemo {
/* 構(gòu)造方法設(shè)置成privae,即實(shí)現(xiàn)了單態(tài) */
private SingletonDemo() {
}
/* 返回一個(gè)單態(tài)模式的類的實(shí)例 */
public static final SingletonDemo getInstance() {
return new SingletonDemo();
}
}
總結(jié)
以上是生活随笔為你收集整理的java单态模式_Java单态模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用java写一个日历_2017.12.2
- 下一篇: 面试java回答优缺点_阿里Java开发