黑马程序员技术交流社区

标题: 【求助】关于单例设计模式! [打印本页]

作者: 黑马_java猿    时间: 2014-8-10 16:53
标题: 【求助】关于单例设计模式!
本帖最后由 黑马_java猿 于 2014-8-15 21:41 编辑

如下代码,创建一个People类,那么当我们在main方法中创建对象如 People p = new People();  此时的People p是以怎样的形式存在于内存?(是否是局部变量和普通的局部变量有区别?)
而在单例模式中  People p 被放在类下面,此时可以理解为成员变量?  那么此时的People又是以怎样的形式存在于内存中,在饿汉式中的 People p = new People();为何可以被修饰符修饰 ,,它又是以怎样的形式存在?  另外的 单例设计模式 保证对象唯一性的 实用点在哪? 问题比较多 ,希望大神能帮帮忙解答一下 谢谢:)
  1. class People //懒汉式  后加载形式
  2. {
  3.         private static People p;
  4.         private People
  5.         {}
  6.         public static People getInstance()
  7.         {
  8.                 if (p==null)
  9.                 {
  10.                         p = new People();
  11.                 }
  12.                 return p;
  13.         }
  14. }
  15. class People //饿汉式 先加载形式
  16. {
  17.         private static People p = new People();;
  18.         private People
  19.         {}
  20.         public static People getInstance()
  21.         {
  22.                 return p;
  23.         }
  24. }
  25. class 单例设计模式
  26. {
  27.         public static void main(String[] args)
  28.         {
  29.                 People c =People.getInstance();
  30.         }
  31. }
复制代码



作者: そ花痕ゐ蝶梦    时间: 2014-8-10 17:07
People p是局部变量存在栈内存当中。
作者: 如果有梦    时间: 2014-8-10 17:22
第一种方案在多线程的情况下可能不是单例
作者: 舍我其谁    时间: 2014-8-10 17:33
本帖最后由 舍我其谁 于 2014-8-10 17:34 编辑

1,既然是单列,你在main方法中是不可能创建对象的,所以你new People()编译都通不过,因为你的构造私有化了, 2. p在本类里属于本类的成员变量, 3成员变量能被修饰符修饰很正常啊,私有化是避免其他类访问该变量,关于实用性,没实际开发,真不好说,只能说在要求一个类只能存在一个对象的时候用,




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