网上搜到这个资料.
加以修改加工一下,发布.感谢原作者的付出:http://singlewolf.javaeye.com/blog/173877
Singleton类之所以是private型构造方法,就是为了防止其它类通过new来创建实例,即如此,那我们就必须用一个static的方法来创建一个实例(为什么要用static的方法?因为既然其它类不能通过new来创建实例,那么就无法获取其对象,那么只用有类的方法来获取了)
1class Singleton {
2
3 private static Singleton instance;
4
5 private static String str="单例模式原版" ;
6
7
8
9 private Singleton(){}
10
11 public static Singleton getInstance(){
12
13 if(instance==null){
14
15 instance = new Singleton();
16
17 }
18
19 return instance;
20
21 }
22
23 public void say(){
24
25 System.out.println(str);
26
27 }
28
29 public void updatesay(String i){
30
31 this.str=i;
32
33
34
35
36
37 }
38
39}
40
41
42
43public class danli{
44
45 public static void main(String[] args) {
46
47 Singleton s1 = Singleton.getInstance();
48
49 //再次getInstance()的时候,instance已经被实例化了
50
51 //所以不会再new,即s2指向刚初始化的实例
52
53 Singleton s2 = Singleton.getInstance();
54
55 System.out.println(s1==s2);
56
57 s1.say();
58
59 s2.say();
60
61 //保证了Singleton的实例被引用的都是同一个,改变一个引用,则另外一个也会变.
62
63 //例如以下用s1修改一下say的内容
64
65 s1.updatesay("hey is me Senngr");
66
67 s1.say();
68
69 s2.say();
70
71 System.out.println(s1==s2);
72
73 }
74
75}
76
2
3 private static Singleton instance;
4
5 private static String str="单例模式原版" ;
6
7
8
9 private Singleton(){}
10
11 public static Singleton getInstance(){
12
13 if(instance==null){
14
15 instance = new Singleton();
16
17 }
18
19 return instance;
20
21 }
22
23 public void say(){
24
25 System.out.println(str);
26
27 }
28
29 public void updatesay(String i){
30
31 this.str=i;
32
33
34
35
36
37 }
38
39}
40
41
42
43public class danli{
44
45 public static void main(String[] args) {
46
47 Singleton s1 = Singleton.getInstance();
48
49 //再次getInstance()的时候,instance已经被实例化了
50
51 //所以不会再new,即s2指向刚初始化的实例
52
53 Singleton s2 = Singleton.getInstance();
54
55 System.out.println(s1==s2);
56
57 s1.say();
58
59 s2.say();
60
61 //保证了Singleton的实例被引用的都是同一个,改变一个引用,则另外一个也会变.
62
63 //例如以下用s1修改一下say的内容
64
65 s1.updatesay("hey is me Senngr");
66
67 s1.say();
68
69 s2.say();
70
71 System.out.println(s1==s2);
72
73 }
74
75}
76
打印结果:
true
单例模式原版
单例模式原版
hey is me Senngr
hey is me Senngr
true
单例模式原版
单例模式原版
hey is me Senngr
hey is me Senngr
true
private static Singleton instance;
public static Singleton getInstance()
这2个是静态的
1.定义变量的时候是私有,静态的:private static Singleton instance;
2.定义私有的构造方法,以防止其它类通过new来创建实例;
3.定义静态的方法public static Singleton getInstance()来获取对象.instance = new Singleton();