java-培训—Java单例模式.doc_第1页
java-培训—Java单例模式.doc_第2页
java-培训—Java单例模式.doc_第3页
java-培训—Java单例模式.doc_第4页
java-培训—Java单例模式.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单例模式: Q1:什么是单例模式呢? A1:单例模式确保某个类只有一个实例,大家想用这个类的对象的时候,只能拿到一个共同的实例。单例类要自行创建实例。 Q2:为什么要用到单例模式? A2:如果有一个复杂的类,我们总要使用它的对象,那我们岂不是总要new这个对象,这样,会消耗我们的内存,所以我们要选用单例模式。 下面通过一个简单的例子说明单例模式的实现方法: 1 /普通的类,通过new来创建新的对象,每次创建都会得到不同的实例。 2 public class SingletonDemo1 3 /构造方法 4 public SingletonDemo1() 5 6 /普通方法 7 public void singleLove() 8 System.out.println(Persist for you!); 9 10 11 12 13 14 15 16 /使用第一种方式的单例模式类,通过公共属性来创建对象 17 public class SingletonDemo2 18 /第一种实现单例模式的方法,通过公共属性来实现实例化 19 /声明一个公共的静态属性,使只被实例化一次 20 public static final SingletonDemo2 singletonDemo = new SingletonDemo2(); 21 22 /声明一个私有的构造方法,使别人不能随便new对象 23 private SingletonDemo2() 24 25 /普通的方法 26 public void singleLove() 27 System.out.println(Always persist for you!); 28 29 30 31 32 33 34 35 /使用第二种方式的单例模式类,通过。getInstance()来创建对象 36 public class SingletonDemo3 37 /第二种实现单例模式的方法,通过方法来实现实例化 38 /声明一个私有的静态属性,使只被实例化一次 39 private static final SingletonDemo3 singletonDemo = new SingletonDemo3(); 40 41 /声明一个私有的构造方法,使别人不能随便new对象 42 /它只被调用一次,实例存在之后就不再调用了 43 private SingletonDemo3() 44 45 /声明一个公共的静态方法,外界通过调用这个方法来得到唯一的实例 46 public static SingletonDemo3 getInstance() 47 return singletonDemo; 48 49 50 /普通的方法 51 public void singleLove() 52 System.out.println(Persist for you always!); 53 54 55 56 57 58 59 60 public class Test 61 62 /测试方法 63 public static void main(String args) 64 65 /测试1 66 SingletonDemo1 singleton11 = new SingletonDemo1(); 67 singleton11.singleLove(); 68 69 SingletonDemo1 singleton12 = new SingletonDemo1(); 70 singleton12.singleLove(); 71 72 boolean flag = singleton11.equals(singleton12); 73 System.out.println(用equals的方法来判断); 74 System.out.println(此时的flag= + flag); 75 76 if(flag) 77 System.out.println(他们的内存地址是一样的哦,这说明他们是同一个实例,实现了单例模式!); 78 else 79 System.out.println(他们的内存地址不一样,则说明他们是不同的实例); 80 81 82 83 84 /测试2 85 SingletonDemo2 singleton21 = SingletonDemo2.singletonDemo; 86 singleton21.singleLove(); 87 88 SingletonDemo2 singleton22 = SingletonDemo2.singletonDemo; 89 singleton22.singleLove(); 90 91 int addr1 = singleton21.hashCode(); 92 int addr2 = singleton22.hashCode(); 93 System.out.println(用hashCode来判断); 94 if(addr1 = addr2) 95 System.out.println(内存地址是一样的哦,则说明他们是同一个实例,实现了单例模式); 96 else 97 System.out.println(他们的内存地址不一样,则说明他们是不同的实例); 98 99 100 101 102 /测试3103 SingletonDemo3 single31 = SingletonDemo3.getInstance();104 single31.singleLove();105 106 SingletonDemo3 single32 = SingletonDemo3.getInstance();107 single32.singleLove();108 109 boolean flag3 = single31.equals(single32);110 System.out.println(用equals来判断);111 System.out.println(此时的flag= + flag3);112 113 if(flag3)114 System.out.println(内存地址是一样的哦,则说明他们是同一个实例,实现了单例模式);115 else116 System.out.println(他们的内存地址不一样,则说明他们是不同的实例);117 118 119 说明:根据个人使用经验,推荐使用方法三。 甲骨文学习中心,依托ORACLE原厂Java技术优势,打造高端Java研发级人才。甲骨文 Java精英课程定位是Oracle Java EE高端实训项目致力于培养Java EE企业级和软件开发的白领人才,因此在注重动手操作能力的同时加强了理论教学的力度。 甲骨文作为全球最大的IT公司,甲骨文(Oracle)一直致力于为中国和全球培养优秀的IT人才。为了提升中国经济和企业的信息化水平,缓解企业的IT人才需求荒,甲骨文(Oracle)公司与中国众多公司结合

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论