欢迎来到天天文库
浏览记录
ID:40298922
大小:33.00 KB
页数:5页
时间:2019-07-30
《java-培训—Java单例模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、单例模式:Q1:什么是单例模式呢?A1:单例模式确保某个类只有一个实例,大家想用这个类的对象的时候,只能拿到一个共同的实例。单例类要自行创建实例。Q2:为什么要用到单例模式?A2:如果有一个复杂的类,我们总要使用它的对象,那我们岂不是总要new这个对象,这样,会消耗我们的内存,所以我们要选用单例模式。下面通过一个简单的例子说明单例模式的实现方法:1//普通的类,通过new来创建新的对象,每次创建都会得到不同的实例。2publicclassSingletonDemo1{3//构造方法4publicSingletonDemo1(){}56//普通
2、方法7publicvoidsingleLove(){8System.out.println("Persistforyou!");9}10}111213141516//使用第一种方式的单例模式类,通过公共属性来创建对象17publicclassSingletonDemo2{18//第一种实现单例模式的方法,通过公共属性来实现实例化19//声明一个公共的静态属性,使只被实例化一次20publicstaticfinalSingletonDemo2singletonDemo=newSingletonDemo2();2122//声明一个私有的构造方法,
3、使别人不能随便new对象23privateSingletonDemo2(){}2425//普通的方法26publicvoidsingleLove(){27System.out.println("Alwayspersistforyou!");28}29}303132333435//使用第二种方式的单例模式类,通过。getInstance()来创建对象36publicclassSingletonDemo3{37//第二种实现单例模式的方法,通过方法来实现实例化38//声明一个私有的静态属性,使只被实例化一次39privatestaticfinal
4、SingletonDemo3singletonDemo=newSingletonDemo3();4041//声明一个私有的构造方法,使别人不能随便new对象42//它只被调用一次,实例存在之后就不再调用了43privateSingletonDemo3(){}4445//声明一个公共的静态方法,外界通过调用这个方法来得到唯一的实例46publicstaticSingletonDemo3getInstance(){47returnsingletonDemo;48}4950//普通的方法51publicvoidsingleLove(){52Syst
5、em.out.println("Persistforyoualways!");53}54}555657585960publicclassTest{6162//测试方法63publicstaticvoidmain(String[]args){6465//测试166SingletonDemo1singleton11=newSingletonDemo1();67singleton11.singleLove();6869SingletonDemo1singleton12=newSingletonDemo1();70singleton12.single
6、Love();7172booleanflag=singleton11.equals(singleton12);73System.out.println("用equals的方法来判断");74System.out.println("此时的flag="+flag);7576if(flag){77System.out.println("他们的内存地址是一样的哦,这说明他们是同一个实例,实现了单例模式!");78}else{79System.out.println("他们的内存地址不一样,则说明他们是不同的实例");80}81828384//测试28
7、5SingletonDemo2singleton21=SingletonDemo2.singletonDemo;86singleton21.singleLove();8788SingletonDemo2singleton22=SingletonDemo2.singletonDemo;89singleton22.singleLove();9091intaddr1=singleton21.hashCode();92intaddr2=singleton22.hashCode();93System.out.println("用hashCode来判断"
8、);94if(addr1==addr2){95System.out.println("内存地址是一样的哦,则说明他们是同一个实例,实现了单例模式");96}else
此文档下载收益归作者所有