1. 類的訪問權限僅有兩個選擇:包訪問權限或者public。如果不希望其他任何人對該類擁有訪問權限,可以把所有的構造器都指定為private,從而組織任何人創建該類的對象,但是有一個例外,就是在該類的static成員內可以創建。如
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() {}
}
如果把類構造器都指定為private,別人要使用這個類的話,上面的例子給出了兩種方法:
1)創建一個static方法,它創建一個新的Soup對象并返回該對象的引用。如果想要在返回引用之前在Soup上做一些額外的工作,或者如果想要記錄到底創建了多少Soup對象(可能要限制其數量),這種做法將會是大有裨益的。
2)用到了設計模式。這種特定的模式被稱為singleton,這是因為始終只能創建它的一個對象ps1。