很多东西学的时候记得蛮好,很快就忘了,真实的运用到项目中也和简单的做个小demo又不一样。
今天来复习一下单例模式。
单例模式的目的是使得类的一个对象成为系统中的唯一实例,即保证对象唯一。
单例模式实现思路:
想要保证对象唯一
1. 为了避免其他程序过多的建立该类对象.先禁止其他程序建立该类对象.
2.还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象.
3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式.
代码实现:
1. 将构造函数私有化.
2. 在类中创建一个本类对象.
3. 提供一个方法可以获取到该对象
单例模式也有多种实现方式,最常见的就是懒汉式和饿汉式单例模式。
具体实现代码如下:
1 /**饿汉式: ( 开发时一般用这种) 2 3 Single类一旦加载,内存就分配空间给对象s 4 */ 5 public class single { 6 7 //构造函数私有化 8 9 private single (){} 10 11 //创建本类对象(私有并静态常量化) 12 13 private static final single s = new single(); 14 15 //可以在类中定义Set方法,但只能有唯一出口函数 16 17 //获取该对象的方法 18 19 public static single getInstance() 20 21 { 22 23 return s; 24 25 } 26 27 //无论声明多少不同名称的single对象, 其都是静态single对象s的引用 28 29 } 30 31 32 /** 33 懒汉式(延时加载) 34 35 当方法被调用时才建立s对象 36 37 面试问题:涉及多线程,单例模式和同步锁定synchronized关键字 38 39 同步时的锁是: single.class 表示该类所述的字节码文件对象 40 */ 41 42 public class single { 43 44 45 46 private static single s = null ; 47 48 49 50 private single (){ } 51 52 53 54 public static single getInstance() 55 56 { 57 58 if(s ==null) 59 60 { //解决效率问题 61 62 Synchronized(single.class) 63 64 { 65 66 if(s == null) 67 68 s = new single(); 69 70 } 71 72 } 73 74 return s; 75 76 } 80 } 81 82