Java中如何保证一个类在内存中的对象唯一性,讲解如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
/** * 设计模式:对问题行之有效的解决方式。其实它是一种思想。 1,单例设计模式。 解决的问题:就是可以保证一个类在内存中的对象唯一性。 对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。 如何保证对象唯一性呢? 1,不允许其他程序用new创建该类对象。 2,在该类创建一个本类实例。 3,对外提供一个方法让其他程序可以获取该对象。 步骤: 1,私有化该类构造函数。 2,通过new在本类中创建一个本类对象。 3,定义一个公有的方法,将创建的对象返回。 */ package classdemo; /** * @author lizhongfeng_李忠峰 * @fileinfo Test classdemo SingleDemo.java * @time 2015年9月15日 */ // 饿汉式 class Single { // 类一加载对象就已经存在 private static Single s = new Single(); private Single() { } public static Single getInstance() { return s; } } // 懒汉式 class Single2 { // 类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象 // 延迟加载形式 private static Single2 s = null; private Single2() { } public static Single2 getInstance() { if (s == null) { s = new Single2(); } return s; } } public class SingleDemo { /** * @param args */ public static void main(String[] args) { Single s1 = Single.getInstance(); Single s2 = Single.getInstance(); System.out.println(s1 == s2); // Single ss = Single.s; // Test t1 = new Test(); // Test t2 = new Test(); Test t1 = Test.getInstance(); Test t2 = Test.getInstance(); t1.setNum(10); t2.setNum(20); System.out.println(t1.getNum()); System.out.println(t2.getNum()); } } class Test { private int num; private static Test t = new Test(); private Test() { } public static Test getInstance() { return t; } /** * 获取num * * @return num num */ public int getNum() { return num; } /** * 设置num * * @param num * num */ public void setNum(int num) { this.num = num; } } |
Comments | NOTHING