码迷,mamicode.com
首页 > 编程语言 > 详细

浅析JAVA设计模式之单例模式(一)

时间:2014-11-23 09:17:51      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   java   

1 单例模式简介

       单例模式确保一个类只有一个实例,并且自行实行实例化并向整个系统提供这个实例。

       单例模式有三个要点:

        1.某个类只能有一个实例。

        2.它必须自行创建这个实例。

        3.它必须向整个系统提供这个实例。

       单例模式主要分为两种:饿汉式单例模式和懒汉式单例模式

1.1饿汉式单例模式:

       饿汉式单例模式是java语言实现起来最为简单的单例模式,UML图如下:

bubuko.com,布布扣

1.1

        从图中可以看出,它自己将自己实例化。

1.2饿汉式单例模式的实现(建一个Singleton包,所有程序放在该包下):

(1)建一个需要单例化的类(EagerSingleton java)。

package Singleton;
public class EagerSingleton {
	private final static  EagerSingleton instance = new EagerSingleton();
	private EagerSingleton(){}
	//静态工厂方法
	public static EagerSingleton  getInstance(){
		return instance;
	}
} 

        从代码可以看出,在这个类被加载的时候,静态变量instance会被初始化,此时类的私有构造方法被调用,这时,类的唯一实例就被创建出来了。

       还有一个特点就是,构造方法是私有的,所以外部是无法调用其构造方法创建实例,但是因为构造方法是私有的,所以该类不能被继承。

 

(2)编写测试类(TestEagerSingleton.java)。

package Singleton;
public class TestEagerSingleton {
	public static void main(String[] args) {
		// TODO 自动生成方法存根
EagerSingleton eagersingleton1=EagerSingleton.getInstance();
EagerSingleton eagersingleton2=EagerSingleton.getInstance();
EagerSingleton eagersingleton3=EagerSingleton.getInstance();
		
System.out.println(eagersingleton1);
System.out.println(eagersingleton2);
System.out.println(eagersingleton3);
}
}

输出结果:

Singleton.EagerSingleton@c17164

Singleton.EagerSingleton@c17164

Singleton.EagerSingleton@c17164

 

   从结果可以看到,无论创建多少次,都是唯一一个实例。

(3)最后我们看一下UML图。

bubuko.com,布布扣

图1.2


 

Author: Vicky
Introduction:
教育工作者
Sign: 前事不忘,后事之师

浅析JAVA设计模式之单例模式(一)

标签:style   blog   http   io   ar   color   os   sp   java   

原文地址:http://blog.csdn.net/minidrupal/article/details/41407521

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!