JAVA设计模式学习7——单例模式

阅读更多

设计模式的创建模式中前面说了工厂模式,这里我们继续来讨论设计模式中另一个创建模式—单例模式。
单例模式(Singleton)是指确保一个类有且仅有一个实例,而且自行实例化并向整个系统提供这个实例。这个类我们也称它为单例类。单例模式的使用在现实世界里很多,比如我们常见的打印机打印的作业队列,一个没打印完,那么只有在队列等待;windows回收站,windows视窗里回收站有且只有一个实例。
单例模式的目的就是有且只提供一个实例,所以它有一下几个特点:
1、单例类只能有一个实例;
2、单例类必须自己创建自己惟一的实例;
3、单例类必须给所有其他对象提供这一实例。
单例模式的一般结构如下:


JAVA设计模式学习7——单例模式_第1张图片

上图可以看出,单例类自己提供一个实例给自己。
由于java语言的特点在单例的实现上有不同的做法,主要体现在单例类如何实例化自己上。基于上面三个特点我们可以有两种创建单例类实例的方法,第一个是提前创建好,用的时候直接使用;第二种是等到使用的时候再创建实例,业界称第一种为饿汉式,后者成为懒汉式。

 

饿汉式单例设计模式

packagecom.pattern.singleton;
/**
 * 
 *【描述】:饿汉式单例模式
 *【作者】:alaric 
 *【时间】:Jul 8, 2012
 *【文件】:com.pattern.singleton.HungrySingleton.java
 *
 */
publicclass HungrySingleton {

//创建实例
private static final HungrySingleton singleton =new HungrySingleton();

//私有构造子
private HungrySingleton(){}

//静态工厂方法
public static HungrySingleton getInstance(){
    return singleton;
}

}

 懒汉式单例设计模式

packagecom.pattern.singleton;
/**
 * 
 *【描述】:懒汉式单例模式
 *【作者】:alaric 
 *【时间】:Jul 8, 2012
 *【文件】:com.pattern.singleton.LazySingleton.java
 *
 */
public class LazySingleton {

//创建实例
private static  LazySingleton singleton =null;

//私有构造子
private LazySingleton(){}

//静态工厂方法
synchronized public static LazySingleton getInstance(){
//如果为空就new一个实例
if(singleton==null){
     singleton =new LazySingleton();
}
return singleton;
}

}

 

 通过上面代码,可以看出他们之间的区别,相对而言单例设计模式比较简单,我们只要记住它的特点就可以简单掌握了。

 

 

设计模式系列目录:

JAVA设计模式学习1——统一建模语言UML

JAVA设计模式学习2——面向对象设计原则

JAVA设计模式学习3——设计模式概述

JAVA设计模式学习4——简单工厂模式

JAVA设计模式学习5——工厂方法模式

JAVA设计模式学习6——抽象工厂模式

JAVA设计模式学习7——单例模式

JAVA设计模式学习8——建造模式

JAVA设计模式学习9——原型模式

JAVA设计模式学习10——组合模式

JAVA设计模式学习11——适配器模式

JAVA设计模式学习12——装饰器模式

JAVA设计模式学习13——代理模式

JAVA设计模式学习14——享元模式

JAVA设计模式学习15——门面模式

JAVA设计模式学习16——桥梁模式

JAVA设计模式学习17——策略模式

JAVA设计模式学习18——模版方法模式

JAVA设计模式学习19——观察者模式

JAVA设计模式学习20——责任链模式

JAVA设计模式学习21——命令模式

JAVA设计模式学习22——备忘录模式

JAVA设计模式学习23——状态模式

JAVA设计模式学习24——访问者模式

JAVA设计模式学习25——迭代器模式

  • JAVA设计模式学习7——单例模式_第2张图片
  • 大小: 5 KB
  • 查看图片附件

你可能感兴趣的:(单例设计模式)