黑马程序员技术交流社区
标题:
单例设计模式
[打印本页]
作者:
陈云阳
时间:
2014-5-29 06:18
标题:
单例设计模式
本帖最后由 陈云阳 于 2014-5-29 06:58 编辑
class SingleDemo
{
public static void main(String[] args)
{
Student s1 = Student.getstudent();
Student s2 = Student.getstudent();
s1.setAge(30);
s2.setAge(20);
System.out.println(s1.getAge());
}
}
class Student
{
private int age;
private Student(){}
private static Student s = new Student();
/*
private static Student s = new Student()
这句话有个小疑问, 为什么不直接将它修饰为public
然后直接调用s对象,也能起到对象只能建立一个的效果
为什么还要弄getstudent()方法间接调用,
难道有什么隐患吗
*/
public static Student getstudent()
{
return s;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
}
复制代码
单例设计模式:解决一个类在内存只存在一个对象。
想要保证对象唯一。
1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象
2.还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象。
3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
这三步怎么用代码体现呢?
1.将构造函数私有化。
2.在类中创建一个本类对象。
3.提供一个方法可以获取到该类。
对于事物该怎么描述,还怎么描述。
当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。
作者:
菠萝包丶
时间:
2014-5-29 12:53
本帖最后由 菠萝包丶 于 2014-5-29 12:56 编辑
单例设计模式,要保证代码的
封装性
。
对象的建立,过程你不需要管,我们只要最后提供一个方法给你得到那个对象就行了。所以对象要私有化,不能让别人对其进行操作,如果你过多暴露太多的东西,就不安全了。
如果你光是将对象私有化,而不提供方法获取的话,就无法得到对象,这样就没法操作一些非静态的内容了
这就是我们为什么要将建立对象私有化,然后将对象封装起来,只提供方法让你得到那个对象的原因。
作者:
远行的人2号
时间:
2014-5-29 22:36
赞赞赞赞!!!!
作者:
七弦
时间:
2014-5-31 13:04
要是写成public static 直接就类名调用了,ok? 那还要getstudent() 吗?
作者:
七弦
时间:
2014-6-1 10:34
七弦 发表于 2014-5-31 13:04
要是写成public static 直接就类名调用了,ok? 那还要getstudent() 吗?
是的,单例设计模式讲求的就是通过提供的方法获取到本类对象,然后去用,你直接通过类名调用了哪还有封装性可言?
作者:
zhang63
时间:
2014-6-1 10:36
我正要看这个,
作者:
小小菜鸟101
时间:
2014-6-15 07:03
延迟单例模式怎么写呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2