黑马程序员技术交流社区

标题: 懒汉式单例设计模式的多种形式 [打印本页]

作者: songyu    时间: 2015-6-5 20:12
标题: 懒汉式单例设计模式的多种形式
  1. package cn.itcast9;

  2. import java.util.Vector;

  3. /*
  4. * 设计一个单例的Person
  5. * 懒汉式单例设计模式
  6. */
  7. public class Person {

  8.         //定义本类类型成员变量,用于记录这个单例对象
  9.         //由于被静态方法访问,所以使用static修饰
  10.         //为了防止外界改变属性值,使用private修饰
  11.         private static Person p;
  12.        
  13.         //构造方法私有化
  14.         private Person(){}
  15.        
  16. //        //提供静态公共的返回对象实例的方法
  17. //        //标准的获取实例对象的方式
  18.         public static Person getInstance() {
  19.                 if(p==null) {
  20.                         p = new Person();
  21.                 }

  22.                 return p;
  23.         }
  24. //        //考虑线程安全问题
  25. //        public static Person getInstance() {
  26. //                synchronized (Demo.LOCK) {
  27. //                        if(p==null) {
  28. //                                p = new Person();
  29. //                        }
  30. //                }
  31. //                return p;
  32. //        }
  33.        
  34. //        //考虑线程安全问题
  35. //        public static synchronized Person getInstance() {
  36. //                if(p==null) {
  37. //                        p = new Person();
  38. //                }
  39. //                return p;
  40. //        }
  41.        
  42. //        //考虑线程安全问题,有考虑效率问题
  43. //        public static Person getInstance() {
  44. //               
  45. //                if(p==null) {
  46. //                        synchronized (Demo.LOCK) {
  47. //                                if(p==null) {
  48. //                                        p = new Person();
  49. //                                }
  50. //                        }
  51. //                }
  52. //               
  53. //                return p;
  54. //        }
  55.        
  56. }
复制代码
  1. package cn.itcast;
  2. /*
  3. * 单例设计模式:
  4. *                 内存中有且只有一个对象
  5. */
  6. public class Demo {

  7.         public static final Object LOCK = new Object();
  8.        
  9.         public static void main(String[] args) {
  10.                
  11. //                Person p = new Person();
  12. //                Person p2 = new Person();
  13.                
  14. //                System.out.println(p==p2);
  15.                
  16.                 Person instance = Person.getInstance();
  17.                 Person instance2 = Person.getInstance();
  18.                
  19.                 System.out.println(instance==instance2);
  20.         }

  21. }
复制代码





作者: 嘎路的米    时间: 2015-6-6 07:40
学习到了
作者: zuoyou    时间: 2015-6-6 12:24
学习,,,
作者: wuyusi    时间: 2015-6-6 20:27
学些了。。。
作者: 小车车    时间: 2015-6-6 21:08
学习一下!
作者: 路途遥远    时间: 2015-6-6 21:53
学习了  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2