首页 > 解决方案 > 如何按实例计算方法调用

问题描述

我有以下代码。

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

标签: javaoop

解决方案


您可以将装饰器模式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

推荐阅读