首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

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

2012-09-05 
设计模式之创建模式之单例模式一、单例模式(Singleton)1,UML图略了2, 模式说明作为对象的创建模式,单例模式

设计模式之创建模式之单例模式
一、单例模式(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。

热点排行