黑马程序员技术交流社区
标题:
单例设计模式
[打印本页]
作者:
zzkang0206
时间:
2014-2-12 09:14
标题:
单例设计模式
设计模式:解决某一类问题最行之有效的方法。
java中有23种设计模式:
单例设计模式:解决一个类在内存只存在一个对象。
想要保证对象唯一
1,为了避免其他程序过多建立该类对象。先禁止其他程序建立该类对象
2,还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。
3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
这三部怎么用代码体现呢?
1,将构造函数私有化。
2,在类中创建一个本类对象。
3,提供一个方法可以获取到该对象。
对于事物该怎么描述,还怎么描述。
当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。
单例模式,保证在内存中的唯一性
1. class Student
2. {
3. private int age;
4.
5. private static Student s = new Student();
6. private Student(){}
7. public static Student getStudent()
8. {
9. return s;
10. }
11.
12. public void setAge(int age)
13. {
14. this.age= age;
15. }
16. public int getAge()
17. {
18. return age;
19. }
20. }
21.
22. class SingleDemo
23. {
24. public static void main(String[] args)
25. {
26. Single s1 = Single.getInstance();//静态方法可以直接调用
27. Single s2 = Single.getInstance();
28.
29. s1.setNum(23);
30.
31. System.out.println(s2.getNum());
32.
33. // Single s1 = new Single();
34. // Single s2= new Single();
35. // s1.setNum(30);
36. // System.out.println(s2.getNum());
37.
38. // Student s1 = new Student();
39. // s1.setAge(30);
40. //
41. // Student s2 = new Student();
42. // s2.setAge(12);
43.
44. Students1 = Student.getStudent();
45. Students2 = Student.getStudent();
46. }
47. }
单例饿汉式和懒汉式
1. /*
2. 饿汉式:先初始化对象
3. Single类一进内存,就已经创建好了对象。
4.
5. */
6. class Single
7. {
8. private static Single s = new Single();
9. private Single(){}
10. public static Single getInstance()
11. {
12. return s;
13. }
14. }
15.
1. /*
2. 懒汉式:
3. 对象是方法被调用时,才初始化,也叫做对象的延时加载。
4. Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。
5. */
6. class Single
7. {
8. private static Single s = null;
9. private Single(){}
10. public static Single getInstance()
11. {
12. if(s==null)
13. {
14. synchronized(Single.class)
15. {
16. if(s==null)
17. s= new Single();
18. }
19. }
20. return s;
21. }
22. }
23.
24. //记录原则:定义单例,建议使用饿汉式。
作者:
俞帅明
时间:
2014-3-22 21:07
谢谢楼主的总结,非常到位!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2