因为
makeASundae();
不在
public class IceCream 
里面所以看不到这个方法,只能通过
类名
sundae
来调用

解决方案 »

  1.   

    静态工厂是一个Static方法,从字面意思上看,既然它是一个工厂,也就意味者它管理着很多对象。由于我们在现实的项目中往往设计很多对象,但是又不想把更多的细节暴露在开发人员或者使用者的面前,比如说构造函数,各个对象的内部方法。假如说这些对象又可以进一步抽象为同一种类型的话,我们就可以通过一个对象工厂来封装这些对象,这些对象的创建任务由这个对象工厂来实现。这样用户只面对对象工厂,而不用将注意力放在内部对象的细节上。比如EJB,COM+的实现都是基于这种模式。如果想进一步了解,可以参照相关的“设计模式”单例类,简单的说就是在整个应用程序周期中,只有该类的一个实例存在。这样的好处就是避免了一些资源的多进程访问,比如说你要操作日志文件,内存分配,垃圾收集,类运行时等,它们都不允许有多个类进行同时访问。这个时候你可以考虑使用单例类。具体情参照相关的“设计模式”因为上面Sundae 的构造方法是私有的,所以不能用new来构造该对象,不过可以用makeASundae() 来返回他的实例,这样的好处就如上所说的,这个是关于构造模式的一个基础概念