- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单例模式(饿汉模式懒汉模式的登记式)
Logo Logo Logo Logo Logo Logo Logo Logo Logo Logo Logo Logo java单例模式的定义与分类及特点 3 、特点: 2 、分类: java单例模式是一种常见的软件设计模式,它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例 懒汉式单例、饿汉式单例、登记式单例 1 、定义: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。 单例模式有以下特点 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。 单例实现 public class Singleton { private static Singleton uniqueInstance=null; private Singleton(){} public static Singleton getInstance(){ if(uniqueInstance==null){ uniqueInstance=new Singleton(); } return uniqueInstance; } } Singleton通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。(实上,通过Java反射机制是能够实例化构造方法为private的类的,那基本上会使所有的Java单例实现失效。此问题在此处不做讨论,姑且认为反射机制不存在。) 线程安全问题 但是以上实现没有考虑线程安全问题。所谓线程安全是指:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。显然以上实现并不满足线程安全的要求,在并发环境下很可能出现多个Singleton实例。 案列 public class TestStream { String name=null; public String getName(){ return name; } public void setName(String name){ this.name=name; } private TestStream(){} private static TestStreamts1=null; public static TestStream getTest(){ if(ts1==null){ ts1=new TestStream(); } return ts1; } public void printInfo(){ System.out.println(the name is+name); } } 案列测试 public class TestStream { String name=null; public String getName(){ return name; } public void setName(String name){ this.name=name; } private TestStream(){} private static TestStreamts1=null; public static TestStream getTest(){ if(ts1==null){ ts1=new TestStream(); } return ts1; } public void printInfo(){ System.out.println(the name is+name); } } 结论 由结果可以得知单例模式为一个面向对象的应用程序提供了对象惟一的访问点,不管它实现何种功能,整个应用程序都会同享一个实例对象 饿汉式单例类 饿汉式单例类:在类初始化时,已经自行实例化 public class Singleton1 { private Sin
您可能关注的文档
- 华中数控必威体育精装版8型的系统调试培训.ppt
- 千里友情的一线牵.pptx
- 华中科技大学的数据结构实验报告.docx
- 华中科技大学-电机学--第二章-直流电机-P的PT.ppt
- 升级低配大灯 本田XR-v升级增亮大的灯灯光.doc
- 华为 AnyOffice移动办公解的决方案 详版彩页.pdf
- 华为GPON数据规划与业的务配置.ppt
- 华为100G波分设备产品的资料(OSN 9800 系统硬件介绍).pptx
- 华为I的II代功控算法介绍.pptx
- 华为2017年MWC展示:的视频、云计算、网络、IoT.pptx
- 口才大比拼 主题班会 PPT课件.pptx
- 反恐与警惕主题班会PPT课件.pptx
- 急性感染的抗生素治疗.pptx
- 国家安全网络教育.pptx
- 法治教育与公民意识主题班会PPT课件.pptx
- 宣传教育2024年中办国办《中央生态环境保护督察整改工作办法》课件(PPT).pptx
- 银行行业:结构性货币政策工具投放规模前瞻-250428-广发证券-13页.pdf
- 非银金融行业:政策取向更加积极有为,关注板块估值修复空间-250427-广发证券-11页.pdf
- 固定收益专题报告:卖方观点是利率的先行指标吗?-250429-华安证券-12页.pdf
- 总量“创”辩第101期:确定性的基本盘-250429-华创证券-11页.pdf
最近下载
- 学前教育政策与法规 5学前教育政策与法规-第三章-学前教育机构工作人员的权利与义务.pptx VIP
- 网课答案《日本近现代文学选读》超星尔雅答案2023章节答案.docx
- (完整版)深圳市劳动合同标准版(全日制).doc
- 5.2.2土壤形成的主要因素课件高中地理必修一.pptx
- GB∕T 1040.2-2022 塑料 拉伸性能的测定 第2部分:模塑和挤塑塑料的试验条件.pdf
- 良友圣经学院网站lts33.net使用锦囊.PDF
- 7.2 离散型随机变量及其分布列(课件)高二数学(人教A版2019选择性必修第三册).pptx VIP
- 附表5建筑施工企业单个项目评分内容和评分标准(安全、及概要.doc VIP
- 高中语文教学:戏剧化小说.docx
- 路基排水沟施工方案.pdf VIP
文档评论(0)