黑马程序员技术交流社区

标题: 单例设计模式下的 懒汉式和饿汉式。 [打印本页]

作者: 可见    时间: 2012-3-10 11:33
标题: 单例设计模式下的 懒汉式和饿汉式。
问题是 构造函数 private student(){} 运行时提示报错;求解!
class StudentDemo
{
         public static void main(String[] args)
                  {
                           Student s=new Student();
                           s.setAge(10);
                           System.out.println(s.getAge());
                           Student1 s1=new Student1();
                           s1.setAge(20);
                           System.out.println(s1.getAge());
                  }
}
class Student
{
             private int age;
             private static Student s =new Student();
             //private Single(){}
             public static Student getInstance()
                  {
                       return s;
                  }
             public void setAge(int age)
                  {
                       this.age=age;
                  }
             public int getAge()
                  {
                       return age;
                  }

}
class Student1
{
             private int age;
             private static Student s=null;
             //private Student(){}
             private static Student getInstance()
                 {
                      if(s==null)
                             {
                                    synchronized(Student1.class)
                                         {
                                                  if(s==null)
                                                           s=new Student();      
                                          }
                               }
  
                       return s;
}


             public void setAge(int age)
                  {
                       this.age=age;
                  }
             public int getAge()
                  {
                       return age;
                  }
}



运行报错:private student(){}  需要返回值
作者: 冯旭君    时间: 2012-3-10 11:40
private student(){} 是写在Student1文件里的。你是否想写Student1的构造函数呢?如果是想写构造函数,请改为private Student1(){}.如果不是想写构造函数,必须加上返回类型,不然肯定会报错的。
作者: 王睿    时间: 2012-3-10 12:07
  //private Student(){}   这是Student类的构造函数,写在了Student1中当然报错!
作者: 刘雷冲    时间: 2012-3-10 12:12
  1. public class XMLConfigReader {
  2.    
  3.     private static XMLConfigReader instance = null;
  4.    
  5.     private XMLConfigReader() {
  6.            
  7.     }
  8.    
  9.     public static XMLConfigReader getXMLConfigReader() {
  10.             if(instance == null) {
  11.                     instance = new XMLConfigReader();
  12.             }
  13.             return  instance;
  14.     }
  15. }
复制代码
对于单例模式,一般使用上述方法,即
1、私有的静态的成员变量
2、私有的构造函数
3、公共的静态的入口函数
使用场景:类中没有可以修改的成员变量
单例模式无法继承,无法扩展
如果读取配置文件,比较适合用单例模式

作者: 黑马张平    时间: 2012-3-10 13:15
学习学习!
作者: 袁野    时间: 2012-3-10 14:33
要想一个类 指向创建一个对象 就使用单列

1.构造方法私有化
2.创建本身对象私有化
3.提供一个静态 public 返回这个对象的 方法
作者: 王利强    时间: 2012-3-10 18:03
你这代码写的有问题啊,在类student1里应该是私有student1的构造函数,所以应该是private student1(){}




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