`
唐风汉月
  • 浏览: 52001 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【设计模式笔录】—单例模式剖析(一)

阅读更多

       在软件系统中,经常有这样一些类,必须保证它们在系统中只有一个实例,才能确保它们的逻辑正确性,以及良好的效率。如何绕过常规的构造器(如new),提供一种机制来保证一个类只有一个实例,这就需要使用单例模式类实现。

      通常,我们在实例化一个类的时候,使用new关键字,如:

     

Person person = new Person;

 

      这样我们是站在使用者的角度来创建一个类的实例,而对于单例模式,创建一个类的实例是类设计者的责任,而不是类使用者的责任。

      单例模式在《设计模式》GoF中的定义是:保证一个类只有一个实例,并提供一个该实例的全局访问点。设计一个类为单例,其类图如下:

    Java中单例模式的三种实现方式如下

 

    方式一:饿汉式

   

public class Singleton {
	private static Singleton instance = new Singleton();

	private Singleton() {
	};

	public static Singleton getInstance() {
		if (instance == null) {
			instance = new Singleton();
		}
		return instance;
	}
}

 

   方式二:懒汉式

  

public class Singleton2 {
	private static Singleton2 instance = null;

	private Singleton2() {
	};

	static {
		instance = new Singleton2();
	}

	public static Singleton2 getInstance() {
		if (instance == null) {
			instance = new Singleton2();
		}
		return instance;
	}
}

 

  方式三:

  

import java.util.HashMap;
import java.util.Map;

public class Singleton3 {
	private static Map<String, Singleton3> map = new HashMap<String, Singleton3>();
	static {
		Singleton3 singleton = new Singleton3();
		map.put(Singleton3.class.getName(), singleton);
	}

	protected Singleton3() {
	}

	public static synchronized Singleton3 getInstance(String name) {
		if (name == null) {
			name = Singleton3.class.getName();
			System.out.println("name=null" + "--->name=" + name);
		}
		if (map.get(name) == null) {
			try {
				map.put(name, (Singleton3) Class.forName(name).newInstance());
			} catch (InstantiationException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
		}
		return map.get(name);
	}
}

 

  • 大小: 17.5 KB
分享到:
评论

相关推荐

    设计模式核心笔录

    总的来说,《设计模式核心笔录》是一份全面介绍和分析设计模式的重要参考资料,它将帮助开发者系统性地理解和掌握设计模式,提升软件开发的专业水平。通过实际案例和源码分析,使得理论知识与实践紧密结合,让开发者...

    智能笔录系统.pptx

    产品介绍(一) 规范的笔录模板 对笔录信息实时分析 提取关键要素 智能笔录系统全文共13页,当前为第4页。 产品介绍(二) 对接公安业务系统(情报、警综平台),进行实时比对。 智能笔录系统全文共13页,当前为第5...

    现场勘验检查笔录(范文).pdf

    标题中提到的“现场勘验检查笔录”是一种正式的法律文件,它详细记录了警方或调查人员在犯罪现场所进行的勘查和检查活动。在司法程序中,现场勘验检查笔录作为证据的一部分,对案件的调查和审理起着至关重要的作用。...

    PCB设计精髓笔录-草稿的草稿

    在使用Altium Designer等PCB设计软件时,泪滴设计是一个重要的技巧,它能改善信号质量,强化连接。过孔的设计也需要注意,避免直接放置在焊盘上,以免影响焊接效果。此外,对于RAM的布线,地线应与模拟地分开,以...

    破产清算组询问笔录.pdf

    破产清算组询问笔录是一种企业非诉文书,用于记录破产清算组与相关人员或单位之间的询问过程。该文书类型中包含了询问的基本信息,如时间、地点、被询问人、询问人、询问主题、内容、询问总结、记录人、询问人签字和...

    强大的电子笔录办公软件

    "强大的电子笔录办公软件"就是这样一款工具,它专门设计用于提升笔录工作的质量和速度,为用户提供了前所未有的便捷体验。这款软件集成了多种功能,旨在优化办公流程,减少手动输入的时间,提高数据的准确性,确保...

    律师庭审笔录(民事).pdf

    律师庭审笔录(民事) ...3. 研究分析:律师庭审笔录可以作为法律研究和分析的重要资料。 律师庭审笔录是一种重要的法律文件,它记录了律师在法庭上的审讯过程,对法律实践和司法系统具有重要意义。

    常见案件笔录制作指南.doc

    《常见案件笔录制作指南》是一份由某市公安局法制处编写的文档,旨在指导公安人员规范制作各类案件的笔录,以确保执法过程的严谨性和合法性。笔录在刑事和行政案件的处理中起着至关重要的作用,它们既是查明案件事实...

    律师庭审笔录(模板).pdf

    #### 二、庭审笔录结构分析 - **律师事务所名称**:明确记录了所属律师事务所为“山东文鼎(城阳)律师事务所”,有助于区分不同的法律机构。 - **庭审基本信息**: - **时间**:2013年某月某日,具体日期需填写。 ...

    尽职调查访谈笔录(通用)

    尽职调查访谈笔录

    调查笔录模板(单位通用).rar

    标题中的“调查笔录模板(单位通用).rar”暗示了这是一个关于调查笔录的文档集合,通常用于组织或企业内部进行各类调查时记录信息。在教育领域,这样的模板可能被用作教学材料,帮助学生理解如何正确进行调查工作,...

    工作会议笔录ppt模板下载

    一个精心设计的会议笔录PPT模板,能够帮助我们在工作中更高效地整理和呈现会议内容,从而提高团队协作效率。下面,我们将详细探讨如何充分利用“工作会议笔录PPT模板”,并结合实际操作,解析其在行政工作中的应用。...

    笔录软件好用

    笔录软件好用

    安全生产事故调查询问笔录制作要求示范文本.pdf

    安全生产事故调查询问笔录制作要求示范文本.pdf

    公安笔录管理信息系统

    厦门市公安局开发运用的公安笔录制作管理信息系统。

    信访接待谈话笔录.pdf

    信访接待谈话笔录.pdf

    律师调查笔录范例.doc

    律师调查笔录范例.doc

    【最新】笔录执行官(大官人)优品致远

    网上不好找这款软件。现把它共享出来,本人亲测可用,绿色安全,无毒无害,用着舒心,...它可能是您在BBS里一举成名的小文章,可能是让您名利双收的长篇小说,可能是让您商途昌盛的企业策划……这一切您都能一手掌握!

    笔录软件文档说明.doc

    一、主界面 软件的主界面位于左侧导航条中,包含四个按钮:笔录功能、其它功能、设置管理和退出软件。每个按钮都对应着不同的功能模块。 二、笔录功能 笔录功能是软件的核心模块,包括询(讯)问笔录、笔录列表、...

Global site tag (gtag.js) - Google Analytics