如何在装饰器设计模式中使用所有 类?

How to get all classes used in decorator design pattern?

所以我在 java 中实现装饰器设计模式。

总的来说,我的这个调用工作正常。

CrewMember crewMember = new Captain(new ChiefEngineer(new CrewMemberImpl()));

现在我有一个问题,例如,如何从 ChiefEngineer(不在基本接口中)中将方法调用为 crewMember

我理想中想要的是:

crewMember.methodFromChiefEngineerClass();

也许有办法从 crewMember 获取所有相关分类?以某种方式使用instanceof?还是我听错了

Captain 中创建一个代理方法,它调用包含的 ChiefEngineer 对象的相应方法。

public class Captain {
    private final ChiefEngineer chiefEngineer;

    public Captain(final ChiefEngineer chiefEngineer) {
        this.chiefEngineer = chiefEngineer;
    }

    public void methodFromChiefEngineerClass() {
        chiefEngineer.methodFromChiefEngineerClass();
    }

}

Captain class 中创建一个方法来获取 ChiefEngineer 对象并使用它来调用 ChiefEngineer class 中的方法。

public class Captain {

  private final ChiefEngineer engineer;

  public Captain(final ChiefEngineer engineer) {
    this.engineer = engineer;
  } 

  public ChiefEngineer getChiefEngineer() {
    return this.engineer;
  }
}

然后做

crewMember.getChiefEngineer().methodFromChiefEngineerClass();