新人学习java中,想一段模式程序!
class A
{
public int i = 20;
private static A a = new A(); // 这里加个private ,将其变成了一个私有属性;
private A()
{
}
public static A getA()
{
return a;
}
}
这段程序的作用是什么,为什么要这样写了,其实际用途又是什么? --------------------编程问答-------------------- 保证该类只有一个实例 --------------------编程问答-------------------- 这就是设计模式中的单例模式 --------------------编程问答-------------------- 单例模式,保证系统中只存在一个A的实例 --------------------编程问答-------------------- 一般我们的构造函数都是public,而这里是private,为什么呢?
构造函数私有,这样可以确保这个类不能被实例化,那么这个对象就不能够实例化了,那我怎么来获得这个对象?
通过它自己的方法 getA()来获取自己的静态实例.因为是静态的,那么它获取的对象,永远就是同一个对象了.
这就是设计模式中的单例模式.
为什么要这样呢?举个实际的例子:
以前大臣们向皇帝汇报工作,因为中国只有一个皇帝,所以 大臣1,大臣2,大臣3..汇报的都是同一个人,在我们
要用到皇帝对象时,我们不能每次都新建一个,那样就导致有很多的皇帝了.
通过上面getA(),我们拿到的都是同一个皇帝,这样才是正确的. --------------------编程问答--------------------
谢谢大神! 体会中 --------------------编程问答-------------------- 有些类在整个系统中只允许有一个实例。
而这段代码就是提供这个功能的。 --------------------编程问答-------------------- 留痕 拿分 走人 --------------------编程问答-------------------- 这是单例模式中的饿汉式。另还有单例的懒汉式,LZ还是谷歌一下比较详细吧。
面试貌似很喜欢问懒汉式,而不是这个饿汉式。 --------------------编程问答-------------------- 最简单的单例模式 --------------------编程问答-------------------- 这是单例模式的一种 叫饿汉式 还有一种懒汉式如下
class Singleton {
private static Singleton instance=null;
private Singleton(){}
static Singleton getInstance() {
if(instance==null)
instance=new Singleton();
return instance;
}
} --------------------编程问答-------------------- http://blog.csdn.net/yyaf2013/article/details/8980266
这是一种单例模式,你看看这篇文章,应该就能有一定体会了!这个单例解释的真的非常非常到位!
补充:Java , Java SE