java - 如何按实例计算方法调用
问题描述
我有以下代码。
public interface Animal{
void eat();
}
public class Lion implements Animal{
@Override
public void eat() {
System.out.println("Lion can eat");
}
public static void main(String[] args) {
Animal lion = new Lion();
lion.eat();
lion.eat();
lion.eat();
}
}
如您所见,我打了eat()
三次电话。我如何计算它被调用的次数?
请注意,您不能eat()
从类中修改方法Lion
解决方案
您可以将装饰器模式与Animal
接口和您的Lion
实例一起使用:
public class EatingDecorator implements Animal {
private Animal target;
private int counter;
public EatingDecorator(Animal target) {
this.target = target;
}
@Override
public void eat() {
target.eat();
counter++;
}
public int getCounter() {
return counter;
}
}
然后应用它
Animal lion = new EatingDecorator(new Lion());
lion.eat();
lion.eat();
lion.eat();
System.out.println(((EatingDecorator) lion).getCounter()); // 3
推荐阅读
- php - 通过 Composer 安装软件包后如何启动脚本?
- tensorflow - 如何理解 tensorflow 中的 conv2d_transpose
- python - 在python中进行曲面拟合后计算3D偏差的均方根
- python - 在 df 中找到较低的低点,但得到只能比较标记相同的 DataFrame 对象
- react-native - 套接字在发布版本中不起作用 React Native
- django - 在 Django admin 上显示多个多边形
- ffmpeg - 任何人都知道这个视频输出可能是什么问题?
- javafx - 在这种情况下如何使用模态对话框?
- c++ - 带有向量的类构造函数中的析构函数调用
- jquery - Bootstrap datetimepicker第一次点击触发onChange事件?