【发布时间】:2014-10-27 10:12:18
【问题描述】:
在Java中,如果我想知道有多少MyClass类型的对象,我可以这样定义MyClass
public class MyClass {
public static int count = 0;
public MyClass() {
count++;
}
//other stuff
//...
}
然后,只是调用
MyClass.count
我可以得到创建的对象的数量。
我想知道是否有办法用接口做同样的事情,例如如果我有一个名为 ICountable 的接口,我怎么知道此时我的程序中有多少个 ICountable 对象。我正在考虑用工厂模式来做这件事,但是在任何设计方式中我都注意到了弱点,所以我还没有想出一个可行的解决方案,有人知道这样做的好方法吗?
【问题讨论】:
-
你知道你必须先
implement你的界面吗?所以我假设您将使用implements您的 iCountable 接口的类的对象? -
除非你可以一些控制实现你的接口的人,否则除非你愿意把你的接口变成一个抽象类,否则这是不可能的。但是由于 Java 具有单一实现继承,这可能会干扰其他事情。
-
当然可以,但是如何强制为所有实现我的接口的类实现计数系统?如何获得所有 ICountable 对象的数量而不单独计算所有实现类并求和?
-
@SebastianRedl 我试图用一个抽象类来做到这一点,但这不是我们所需要的,因为 java 不允许多重继承,所以它有点阻止我
-
@A4L 这应该是一个答案。