return Calender.getinstance().get(Calender.YEAR); 和Calender now=Calender.getinstance();
return now.get(Calender.YEAR); 是一样的嘛,怎么会是两种实例的创件?

解决方案 »

  1.   

    你如果只是临时用一下Calender的实例,则可以用Calender.getinstance()
    但如果很多地方要用到Calender的实例,用Calender now=Calender.getinstance();创建一个,
    以后用的时候直接使用now就可以了,比较方便。
      

  2.   

    这是一种设计模式:单态模式
    这种类的不是没有构造函数,而是构造函数是private的
    必需通过这个类下面的一个static方法来构造,getInstance()其实就是返回一个类对象
      

  3.   

    Calender now=Calender.getinstance();
    这个方法是创建了一个实例,并且把该实例给了 now 。return Calender.getinstance().get(Calender.YEAR);
    但这行应该是用作得到当前时间所在的年份的吧,如现在是2005
    用同样的方法也可以得到当前时间的各个域的
    Calender now=Calender.getinstance();
    int year = now.get(Calender.YEAR);
    int month = now.get(...);另外单例模式的解释楼上的兄弟讲得蛮好的。
    有机会可以看《JAVA 与模式》,很难得中国人也出了一本这种水平的书。
      

  4.   

    同意  topil(认认真真学习,塌塌实实工作) 的。就是一样的啊。一般创建实例都是用 Some s = new Some();
    就是new的方法。如果象Calender那样,是用到设计模式里的单例模式。另外,工厂模式也用这种方式,不过有一点不同。
      

  5.   

    兄弟,实在是不好意思,我答错了,可惜昨天上床后才想起来的。  这不是单例模式。  将构造方法私有化是单例模式的必要条件而非充分条件。  在 Calender 类中,它将构造方法私有化了,但它另外提供了类方法以供用户使用,但它并没有事先创建好对象。如果你有兴趣去看一下 Calender 类中的方法的话,你会发现,其实 getInstance() 方法也不止一个,而且在这个方法里面仍然是调用其它方法来创建对象的。  如果你想在自己的类中也使用类似于 getInstance() 方法来创建对象的话,那只要在该方法内部创建对象并返回就 OK 了。但要把构造方法私有化。