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。