class Soup {
  private Soup() {}
  // (1) Allow creation via static method:
  public static Soup makeSoup() {
    return new Soup();
  }
  // (2) Create a static object and return a reference
  // upon request.(The "Singleton" pattern):
  private static Soup ps1 = new Soup();
  public static Soup access() {
    return ps1;
  }
  public void f() {}
}
1,上面这段代码中,既然构造函数已设定为private,(书上的解释是:也就不能再通过它来创造新的类对象了),后面的静态方法在这又设置为public,我知道可通过它来创造新的对象,这两种方法有什么不同?为什么把结构体设置为private却又通过那个静态方法呢??这不多此一举么???

解决方案 »

  1.   

    这个叫类的单态,别人没办法盗版我,而我又开了个窗口来分发正版.
    这两个方法有社么不同?没可比性
    这不多此一举么???这就是单态的特点所在
      

  2.   

    第一个貌似一个简单的工厂方法。用静态方法返回一个实例。好处是,你可以根据需要来控制何时、如何返回这个类的实例,如果这个类有若干子类的话,你还可以在恰当的时候返回某个子类的实例。第二个是单例模式,即只允许该类有一个实例。很多情况下你会需要你的对象是独一无二的,这时就用单例模式。