我有一个问题,我无法再解决。作为最近熟悉设计模式但尚未处理它们的初级开发人员,我需要你的帮助才能找到合适的。
问题是:
我想借助抽象类或接口来推广对象。
- 醇>
我想计算派生类的每个实例,因为我需要限制它们的数量。
例如在"海战#34;游戏我使用的类:SeaObject ---->我的船,小船,Kreyser。地雷,船只等的数量有限
我试过使用静态字段' count'在基类中我并不了解如何以正确的方式使用它。因为我可以再次复制和粘贴静态字段。我怀疑它不好:[。
我同意我决定使用抽象类SeaObject是不对的。如果存在更好的选择,我会使用它。
请不要严格要求我,我是这里的新人。 感谢您的帮助。
答案 0 :(得分:1)
签出对象池模式。它基本上是一个工厂,可以统计它所创造的东西。
答案 1 :(得分:0)
您必须在某处提及这些对象,否则您无法使用它们。在Java中,如果你没有引用一个对象,它就会被垃圾收集,在c ++中它会导致内存泄漏。
我也发现SeaObject
中没有值知道有多少其他SeaObject
,以便它可以限制它自己的创作。其他代码应该做出决定。
所以在你的游戏类中,你应该有一个对象列表。这样很容易看出目前有多少,你需要它与这些对象进行交互或绘制这些对象:
public class Game {
private static final int MINE_LIMIT = 10;
private final ArrayList<Mine> mines = new ArrayList<Mine>();
public void addNewMineIfNotTooManyAlready() {
if(mines.size() < MINE_LIMIT) {
mines.add(new Mine());
}
}
}
如果您愿意/需要,列表mines
可以是超级类型的列表,例如SeaObject
。