为新对象生成标识符

问题描述 投票:0回答:2

我希望为所有创建的新对象实现标识符生成器并为其赋值。下面的代码中我缺少什么?

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;
    }


}
java object oop counter
2个回答
1
投票

您应该在静态方法调用中设置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;
}

1
投票

首先,删除 setCounter 方法,因为它将更改类的私有状态。

其次,getNumber方法应该只返回this.number。目前,每当调用该方法时,您的号码都会增加。

第三,将值赋给Figure构造函数中的数字:

this.number = ++counter;

我认为 Square、Circle 和 Rectangle 扩展了 Figure,因此它们将调用超级构造函数并获取它们的数字集。

此外,如果我们谈论工厂设计模式,最好有一个单独的类来生成对象。

© www.soinside.com 2019 - 2024. All rights reserved.