`
javabkb
  • 浏览: 53706 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

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

阅读更多
一、单例模式(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。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics