Java_设计模式
1 /* 2 设计模式:解决问题的一种行之有效的思想。 3 共23种设计模式 4 5 其中一种: 6 单例设计模式: 7 解决:保证了一个类在内存中只能有一个对象。 8 9 比如多程序访问同一个配置文件,希望多程序操作的都是同一个配置文件中的数据 10 11 那么就需要保证该配置文件在对象的唯一性 12 13 思路: 14 1,怎么做才能保证这个对象是唯一的呢? 15 1,其他程序随时用new创建该类对象,无法控制个数。 16 结论:不让其他程序创建该类的对象。因为不可以控制。 17 2,不让其他程序创建,该类在本类中自己创建一个对象。 18 3,该类将创建的对象对外提供,让其他程序获取并使用。 19 20 步骤: 21 1,怎么实现不让其他程序创建该类对象呢? 22 将该类中的构造函数私有化。 23 2,在本类中创建一个本类对象 24 3,定义一个方法,返回值类型是本类类型,让其他程序通过该方法就可以获取到该类对象。 25 26 误区:使用set get方法使对象变得可控 27 28 */ 29 //传说中的饿汉式开发用 30 class Single 31 { 32 private static Single s= new Single(); 33 private static Single(){} 34 public static Single getInstance()//定义方法是为了可控 35 { 36 return s; 37 } 38 39 } 40 //单例的延迟加载方式 懒汉式 41 class Single2 42 { 43 private static Single2 s = null; 44 private Single2(){} 45 public static Single2 getInstance() 46 { 47 if (s==null) 48 { 49 s=new Single2(); 50 } 51 return s; 52 } 53 } 54 class SuperMan//超人要保证唯一性,私有化 55 { 56 private int age; 57 private String name; 58 59 private static SuperMan man = new SuperMan("超人"); 60 private SuperMan(String name) 61 { 62 this.name=name 63 } 64 public void setAge(int age) 65 { 66 this.age=age; 67 68 } 69 public int getAge() 70 { 71 return age; 72 } 73 public String getName() 74 { 75 return this.name; 76 } 77 public static SuperMan getInstance() 78 { 79 return man; 80 81 } 82 83 } 84 85 class SingleDemo 86 { 87 public static void main(String[] args) 88 { 89 /* 90 Single s1 = new Single(); 91 Single s2 = new Single(); 92 System.out.println(s1==s2);//false 93 */ 94 //创建不了对象 new Single().getInstancd(); 95 // Single s1 = Single.getInstance(); 96 // Single s2 = Single.getInstance(); 97 // System.out.println(s1==s2);//true 通过方法获取对象s 98 SuperMan s1 = SuperMan.getInstance(); 99 System.out.println(s1.getName); 100 System.out.println(s2.getAge); 101 102 103 104 } 105 }