java - 对 super 关键字的困惑; Java 中实现的装饰器模式

标签 java design-patterns super

上面的解释非常好。

但是,我对装饰器模式(DeP)的实现有点困惑,如

http://www.netobjectives.com/resources/books/design-patterns-explained/java-code-examples/chapter17/#17-1

上述链接代码的设计位于tinypic.com/view.php?pic=xnaqlt&s=3

我对“super.callTrailer();”感到困惑在装饰器类 Header1、Header2、Footer1 和 Footer2 中,全部派生自 TicketDecorator。

不应该只是“callTrailer();”吗? ?由于“private Component myTrailer;”行,每个装饰器对象都会有自己的对下一个装饰器的引用。

注意:我不太精通 Java,并且是设计模式的初学者。

最佳答案

它们都会给你相同的结果。由于callTrailer()仅存在于父类中,因此单独调用callTrailer()将自动调用TicketDecorator的callTrailer()。我猜他们将 super 放在那里的原因是为了明确它正在调用父级的方法。

关于java - 对 super 关键字的困惑; Java 中实现的装饰器模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3272279/

相关文章:

java - 在保持同步的同时调度线程 - java

java - Hibernate 工具给出 "Caused by: java.lang.NoSuchMethodError: javax.persistence.SequenceGenerator.catalog()Ljava/lang/String;"

java - jbpm-6.2.0-SNAPSHOT 安装失败

design-patterns - 为什么在域模型中以不同的方式表示购物车和订单发票?

design-patterns - 设计模式的序列图存储库

c++ - Composite in C++ 错误 [没有匹配的成员函数来调用 'push_back']

javascript - React Native - super 表达式必须为空或函数

java - 使用 'super' 关键字绑定(bind)泛型

java - 仅从命令行获取系统属性列表

java - Java 线程中的 super.run() 是什么意思?