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 }