我希望为所有创建的新对象实现标识符生成器并为其赋值。下面的代码中我缺少什么?
public abstract class Figure {
private static int counter = 0;
private int number;
public Figure() {
}
public static Square createSquare(double a) {
return new Square(a);
}
public static int getCounter() {
return counter;
}
public static void setCounter(int counter) {
Figure.counter = counter;
}
public int getNumber() {
return number = ++Figure.counter;
}
}
您应该在静态方法调用中设置number。
public static Rectangle createRectangle(double a, double b) {
Figure fg = new Rectangle(a, b);
fg.number = ++counter;
return fg;
}
public int getNumber() {
return number;
}
首先,删除 setCounter 方法,因为它将更改类的私有状态。
其次,getNumber方法应该只返回this.number。目前,每当调用该方法时,您的号码都会增加。
第三,将值赋给Figure构造函数中的数字:
this.number = ++counter;
我认为 Square、Circle 和 Rectangle 扩展了 Figure,因此它们将调用超级构造函数并获取它们的数字集。
此外,如果我们谈论工厂设计模式,最好有一个单独的类来生成对象。