上面的解释非常好。
但是,我对装饰器模式(DeP)的实现有点困惑,如
上述链接代码的设计位于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/