单例模式有以下三个特点:
一、单例类在整个系统中只能有一个实例
二、单例类必须自己创建自己的实例
三、单例类必须系统中其他对象提供这个实例
单例类分为三种:
第一种:饿汉式,在类被加载时,静态变量m_instance会被初始化,此时类的私有构造子会被调用。
代码如下:
public class NewMMAnalyzer{
private static final NewMMAnalyzer m_instance = new NewMMAnalyzer();
private NewMMAnalyzer() {
}
public static NewMMAnalyzer getInstance() {
return m_instance;
}
}
第二种:懒汉式,在下面给出懒汉式单例类实现里对静态工厂方法使用了同步化,以处理多线程环境
代码如下:
public class NewMMAnalyzer{
private static NewMMAnalyzer m_instance = null;
private NewMMAnalyzer() {
}
synchronized public static NewMMAnalyzer getInstance() {
if(m_instance==null){
m_instance = new NewMMAnalyzer();
}
return m_instance;
}
}
第三种:登记式。
代码如下:
package lucene.kameilong.MMtoken;
import java.util.HashMap;
public class NewMMAnalyzer {
static private HashMap<String, NewMMAnalyzer> m_registry = new HashMap<String, NewMMAnalyzer>();
static {
NewMMAnalyzer x = new NewMMAnalyzer();
m_registry.put(x.getClass().getName(), x);
}
protected NewMMAnalyzer() {
}
public static NewMMAnalyzer getInstance(String name) {
if (name == null)
name = "lucene.kameilong.MMtoken.NewMMAnalyzer";
if (m_registry.get(name) == null)
try {
m_registry.put(name, (NewMMAnalyzer) Class.forName(name)
.newInstance());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return m_registry.get(name);
}
}
分享到:
相关推荐
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂 第二部分
JAVA设计模式中的单例模式,欢迎各位下载!!
讲解JAVA设计模式中的单例模式
java设计模式之单例模式
入名所示,该文件为最详细的Java单例模式讲解并附有讲解代码。主要讲了单例模式的几种方法,懒汉模式、饿汉模式、静态内部类模式。着重讲解了懒汉模式下怎么实现线程安全。饿汉模式和静态内部类模式如何设置能够避免...
java设计模式中的单例模式,而单例模式又分为饿汉模式和懒汉模式
目录 单例模式的概念 单例模式的要点 单例模式类图 单例模式归类 单例模式的应用场景 单例模式解决的问题 单例模式的实现方式 单例模式实现方式对比 单例模式的概念 单例模式,顾名思义就是只有一个实例,并且由它...
JAVA设计模式之单例模式。 一篇文章带你快速了解!
java设计模式之单例模式,通过例子说明8种单例设计模式。
JAVA设计模式之单例模式(完整版)1[定义].pdf
设计模式--单例模式java例子
java设计模式之单例模式详解,包含例子,详解。
单例模式源代码 博文链接:https://yangguangfu.iteye.com/blog/815944
单例模式和工厂模式结合应用,实现了产品的生产,适合用做课程设计,包含详细文档和代码。Java语言。喜欢的可以下载来看看那
Java设计模式-单例模式详解
代码中演示了Java设计模式中的单例模式,其中包括饿汉单例模式,懒汉单例模式以及序列化饭序列化单例模式。在实际的开发中,可以直接借鉴使用。
设计模式 java设计模式-单例.pdf
此文档为Tom老师的公开课的单例的7种写法的一个文档,充分分析单例模式,值得对设计模式有研究的童鞋下下来好好看看
给同学上课时做的ppt