我一直在不同的地方读到,通常建议使用静态工厂方法而不是公共构造函数。
优点之一是与构造函数不同,静态工厂方法不会在每次调用时创建新对象。但是,正如我在此站点上所读到的,该类的工厂方法
class Employee {
private int _type;
static final int ENGINEER = 0;
static final int SALESMAN = 1;
static final int MANAGER = 2;
Employee (int type) {
_type = type;
}
}
定义为:
static Employee create(int type) {
return new Employee(type);
}
因此,要创建一个新实例,我们这样做
Employee eng = Employee.create(Employee.ENGINEER);
我不明白的是,工厂方法不是调用公共构造函数吗?那么它不是重新创建一个新实例吗?
使用我不太理解的静态工厂方法的第二个方面是为什么没有公共/受保护构造函数的类不能被子类化?