s = new Student(); 
这部就是实例化对象了嘛
这个模式是单键模式

解决方案 »

  1.   

    这就是单实例模式嘛,所谓单实例,就是说,在程序中,始终只能存在此类的一个实例。要实现这个方法的第一步,就是用户不能任意的实例化对象,所以,构造函数的私有,表示不可以再类的外部使用new来构造此类的实例。而只能在类的内部构造。所以,要得到这个类的实例,类中必须提供一个得到类实例的方法,本例中,就是GetStudent方法。而这个得到自身实例的方法,需要在构造类的实例之前就调用,所以,必须是静态的方法,那么,它引用的类的变量,也必须是静态的。所以,这个类中的私有的实例对象,也必须是静态的。关于“恶汉”与“懒汉”这两种方法,我只能说,根据我的理解,“恶汉”方法其实是一种错误的方法。结合本例,详细点儿说的话,s 变量是对于自身这个类的一个实例的引用,在第一次调用GetStudent方法前,它是一个空引用。而在第一次调用GetStudent方法时,两种方式并没有实质性的区别。但到了第二次调用时,“懒汉”方式会直接返回上一次构造出来的实例对象,而“恶汉”的方式是再次重新生成一个实例对象并返回。  所以,在这时,两种方式都会返回一个本类的实例对象,但“懒汉”返回的是上一次的实例,“恶汉”返回的是新的实例。 在这种情形下,个人觉得,“恶汉”的方式与直接使用公有的构造函数是没有区别的了。