读书人

设计形式之创建模式之单例模式

发布时间: 2012-09-05 15:19:34 作者: rapoo

设计模式之创建模式之单例模式
一、单例模式(Singleton)
1,UML图
略了

2, 模式说明
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并且向整个系统提供这个实例。这个类称为单例类。
单例模式的要点有三个:
一是某个类只能有一个实例;
二是它必须自行创建这个事例;
三是它必须自行向整个系统提供这个实例。

3,模式示例代码

package com.maohao.build.singleton;     public class HundrySingleton {private HundrySingleton(){};private static final HundrySingleton new_instance = new HundrySingleton();public static HundrySingleton getSingleInstance() {return new_instance;}    }


饿汉式单例类:这个类被加载时,静态变量会被初始化,此时类的私有构造子会被调用。这个时个,单例类的惟一实例就被创建出来了。Java语言中单例类的一个最重要的特点是类的构造子是私有的,从而避免外界利用构造子直接创建出任意多的实例。值得指出的是构造子是私有的,因此此类不需要被被继承。

package com.maohao.build.singleton;    public class LazySingleton {private LazySingleton(){};private static LazySingleton new_instance;public static synchronized LazySingleton getSingletonInstance() {if(new_instance == null) {new_instance = new LazySingleton();}return new_instance;}      }


懒汉式单例类:与饿汉式单例类相同之处是,类的构造子是私有的。与饿汉式单例类不同的是,懒汉式单例类在第一次被引用时将自己实例化。如果加载器是静态的,那么在懒汉式单例类被加载时不会将自己实例化。

4,模式使用场景
在一个系统要求一个类只有一个实例时才应当使用单例模式。

5,模式应用
java.lang.Runtime

6,特别说明
关于单例模式的双重检查锁,由于JMM的机制决定了双重检查锁在Java语言下是失效的,因此Java语言下直接锁住方法即可。具体解释如下:http://allenlly.iteye.com/blog/984106。

读书人网 >软件开发

热点推荐