Путаница с супер ключевым словом; Шаблон Decorator реализован в Java - PullRequest
0 голосов
/ 17 июля 2010

приведенное выше объяснение очень приятно.

Однако меня слегка смущает реализация шаблона Decorator (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 и начинаю изучать шаблоны проектирования.

1 Ответ

2 голосов
/ 17 июля 2010

Они оба дадут вам одинаковый результат.Так как callTrailer () существует только в родительском классе, то вызов callTrailer () сам по себе автоматически вызовет callTrailer () TicketDecorator.Я предполагаю, что причина, по которой они добавили super, заключается в том, чтобы сделать явным то, что он вызывает метод родителя.

...