在运行时,需要跟踪类的实例数.从面向对象的角度来看,您使用以下哪个约定来实现此目的?
选择
选择1是我的选择
我对吗?
不做作业.
我是JAVA程序员.但我不得不回答C++问题.
有点对.静态WeakHashMap和将自身置于地图中的构造函数可以完成这项工作.每次调用size()时,它都会检查哪些对象已被gc'ed.
更多oop(我想)的方法是使用静态工厂方法,如:
class Trackable {
private static WeakHashMap<Trackable, Object> map = new WeakHashMap<>();
private static final Object dummy = new Object();
public static Trackable newInstance() {
Trackable instance = new Trackable();
map.put(instance, dummy);
return instance;
}
public static int getTrackedObjectSize() {
return map.size();
}
private Trackable() {}
}
Run Code Online (Sandbox Code Playgroud)