无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Singleton 模式

Posted on 2009-06-01 21:25 Gavin.lee 阅读(207) 评论(0)  编辑  收藏 所属分类: java design pattern

单态类概念:Singleton 是一种创建性模型,它用来确保在整个软件系统中,某个类只产生一个实例,并提供一个访问它的全局访问点.对一些类来说,保证只有一个实例是很重要的,比如有的时候,数据库连接或 Socket 连接要受到一定的限制,必须保持同一时间只能有一个连接的存在.再举个例子,集合中的 set 中不能包含重复的元素,添加到set里的对象必须是唯一的,如果重复的值添加到 set,它只接受一个实例.JDK中正式运用了Singleton模式来实现 set 的这一特性,大家可以查看java.util.Collections里的内部静态类SingletonSet的原代码.其实Singleton是最简单但也是应用最广泛的模式之一,在 JDK 中随处可见.

单态类的特性:
1、单态类只可有一个实例。
2、它必须自己创立自己这唯一的一个实例。
3、它必须给所有其它的类提供自己这一实例。

饿汉式:
public class EagerSingleton {
    private static final EagerSingleton instance = new EagerSingleton();
    private EagerSingleton() { }
    public static EagerSingleton getInstance() {
     return instance;
    }
}

懒汉式:
public static LazySingleton getInstance(){
    private static LazySingleton m_instance = null;
    private LazySingleton(){}

    public static synchronized LazySingleton getInstance() {
        if(instance == null) 
            instance = new LazySingleton();
     return m_instance;
    }
}

其实学了一点java的初学者,写一个单态类,是绝对没问题的,但是想用好它,好像就没那么简单了,http://www.uml.org.cn/sjms/200903103.asp 这篇文章写的非常好。先到这里,以后等摆脱菜鸟的称号了再来仔细想想单态模式。期待中……


只有注册用户登录后才能发表评论。


网站导航: