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

发布于 2024-09-10 04:23:18 字数 596 浏览 4 评论 0原文

上面的解释很好。

中给出的装饰模式 (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,并且是设计模式的初学者。

the above explanation is very nice.

However, I am slightly confused by the implementation of Decorator Pattern (DeP) as given in

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

The design for above linked code is given at tinypic.com/view.php?pic=xnaqlt&s=3

I am confused by "super.callTrailer();" in the decorator classes Header1, Header2, Footer1 and Footer2, all derived from TicketDecorator.

Shouldn't it be just "callTrailer();" ? As each decorator object would have its own reference to the next decorator due to the line "private Component myTrailer;".

Note: I am not very well versed in Java and a beginner in Design Patterns.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烙印 2024-09-17 04:23:18

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

They will both give you the same result. Since callTrailer() only exists in the parent class then calling callTrailer() by itself will automatically call the callTrailer() of the TicketDecorator. I guess the reason they put super in there is to make it explicit that it is calling the parent's method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文