黑马程序员技术交流社区
标题:
关于单例设计的疑问
[打印本页]
作者:
游兴钟
时间:
2012-4-9 13:56
标题:
关于单例设计的疑问
class Student
{
private int age;
private static Student s = new Student();//假如我在建立本类对象时不加private会有什么影响
private Student(){}
public static Student getStudent()
{
return s;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
}
作者:
翟友伟
时间:
2012-4-9 14:03
本帖最后由 翟友伟 于 2012-4-9 14:07 编辑
private的作用是 不让外界自由创立 Student 实例对象
通过方法访问唯一的s
同一时间只能 在内存中只能存在一个对象
不private的话,谁都来可创建了
作者:
黑马老兵
时间:
2012-4-9 14:08
private static Student s = new Student();//假如我在建立本类对象时不加private会有什么影响
如果没有私有,外部的类就可以调用随意的你这个对象。
作者:
王硕'
时间:
2012-4-9 14:12
class test{
public static void main(String[] args){
Student.s=null;
Student s1=Student.getStudent();
}
}
复制代码
s是Student类的静态成员,不私有当然可以直接调用,我直接把这个引用的值给改成null,你以后再调用getStudent方法,返回的s指向就是null了
作者:
任睦强
时间:
2012-4-9 14:42
single的特点是能够通过公用的方法有限制的获得本身类对象,如果改成public的其他类也可以随意获得该类对象,失去了single模型的特点
作者:
黑马-刘昌文
时间:
2012-4-9 14:45
如果不加private,别的类直接可以通过Student.s这种得属性的方式得到这个类的实例,并且还可以修改这个类的实例,这样在调用getStudent()时得到的实例就可能不是设计时的实例,这就违背了单例的实际思想!
作者:
郑涛
时间:
2012-4-9 17:27
单例设计模式:1,将构造函数私有化。2,用new在本类中创建一个本类对象3,对外提供一个方法返回该对象。这样做才能保证一个类在对象中的内存唯一性。如果不把将new实例私有化,一是单一静态变量在内存中生命周期较长,可以做到控制不创建对象,但内存开销大。私有化静态实例,可以实现内存中对象唯一,外部其他类不能够创建实例对象,实现数据的共享(一个对象)。
作者:
游兴钟
时间:
2012-4-11 02:09
谢谢大家 总算弄明白了
作者:
pray
时间:
2014-4-26 08:07
我顶啊。接着顶
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2