class A 
{
public int i = 20;

private static A a = new A();      //  这里加个private ,将其变成了一个私有属性;

private A()
{

}

public static A getA()
{
return a;
}
}这段程序的作用是什么,为什么要这样写了,其实际用途又是什么?

解决方案 »

  1.   

    一般我们的构造函数都是public,而这里是private,为什么呢?构造函数私有,这样可以确保这个类不能被实例化,那么这个对象就不能够实例化了,那我怎么来获得这个对象?
    通过它自己的方法  getA()来获取自己的静态实例.因为是静态的,那么它获取的对象,永远就是同一个对象了.
    这就是设计模式中的单例模式.为什么要这样呢?举个实际的例子:
    以前大臣们向皇帝汇报工作,因为中国只有一个皇帝,所以 大臣1,大臣2,大臣3..汇报的都是同一个人,在我们
    要用到皇帝对象时,我们不能每次都新建一个,那样就导致有很多的皇帝了.
    通过上面getA(),我们拿到的都是同一个皇帝,这样才是正确的.
      

  2.   

    这是单例模式的一种 叫饿汉式 还有一种懒汉式如下
    class Singleton {
      private static Singleton instance=null;
      private Singleton(){}
      static Singleton getInstance() {
          if(instance==null)
          instance=new Singleton();
          return instance;
      }
    }
      

  3.   

    http://blog.csdn.net/yyaf2013/article/details/8980266这是一种单例模式,你看看这篇文章,应该就能有一定体会了!这个单例解释的真的非常非常到位!