java单态模式_Java单态模式

Java的单态模式 Singletom

作用:保证在Java应用程序中,一个Java类只有一个实例存在;所以一般单态类会提供一个返回该类实例的方法。提供一个对对象的全局访问指针。

优点:节省内存,限制类的个数,有利于Java的垃圾回收机制(Garbage Collection );

缺点及注意点:

1、多线程情况下,懒加载模式可能导致线程不安全因素,例如:同时有两个线程同时调用getInstance方法获取实例时,可能两个线程同时进入if语句判断块,此时类尚未被实例化,那么将同时得到两个不同的实例(此注意点比较容易避免,获取实例时使用同步sync就可以很好的解决)。

2、当单例类被多个classloader加载的情况下,可能获得多个单例类的实例(此种情况可能比较难避免,这需要使所有的类使用相同的类加载器加载)。

3、当单例类实现了序列化接口(Serializer)时,我们如果将对象序列化,并反序列化得到实例时,这个实例将是一个新的实例,而不是序列化之前的实例(在这种情况下,需要在此类中添加readResolve方法,将返回对象设置为当前实例,否则会获得一个不同意序列化之前的类)。

具体实例见类  ~~ SingletonDemo.java ~~

/**

* @author Verphen

* @date 2013-9-9 下午11:23:42

*/

package org.verphen.designMode;

public class SingletonDemo {

/* 构造方法设置成privae,即实现了单态 */

private SingletonDemo() {

}

/* 返回一个单态模式的类的实例 */

public static final SingletonDemo getInstance() {

return new SingletonDemo();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值