看Think in JAVA其中有一个例子没明白
// 看Think in JAVA其中有一个例子没明白
//
// 这段程序是用来测试把所有构造函数设为私有时如何创建类对象,其中有一
// 部分(就是我用*号隔开的那个部分)书中说这用了设计模式的第一种,可我还
// 是不明白这到底干嘛.........?有什么意义
//Lunch.java
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() {}
//*************************************************************
}
class Sandwich { // Uses Lunch
void f() { new Lunch(); }
}
// Only one public class allowed per file:
public class Lunch {
public static void main(String[] args) {
// Can't do this! Private constructor:
//! Soup priv1 = new Soup();
Soup priv2 = Soup.makeSoup();
Sandwich f1 = new Sandwich();
Soup.access().f();
}
} ///:~