Почему название «Декоратор» для дизайна шаблона Декоратор? - PullRequest
2 голосов
/ 05 января 2009

Кто-нибудь может объяснить, почему имя «Декоратор» было выбрано для функциональности, передаваемой шаблоном дизайна Декоратора?

Я всегда считал, что это имя вводит в заблуждение, потому что оформление и интерфейс разметки очень похожи по своему назначению. Однако, в то время как маркер на самом деле ничего не «делает», декораторы, безусловно, делают. Но термин «украшения» для меня подразумевает пассивность, что не совсем так с этим шаблоном, который используется для добавления функциональности.

Ответы [ 4 ]

7 голосов
/ 05 января 2009

Я полагаю, что происхождение термина происходит от примера использования украшения пользовательского интерфейса различными компонентами, например, полосами прокрутки, кнопками закрытия и т. Д.

РЕДАКТИРОВАТЬ: Ссылка на страницу 308 в «Шаблоны проектирования в C #» Стивена Джона Метскера:

Одно из оригинальных приложений DECORATOR (и, предположительно, приложение, от которого DECORATOR получает свое имя) заключается в создании компонентов GUI.

3 голосов
/ 05 января 2009

Я думаю, что аналогия в том, что когда вы украшаете дом, вы на самом деле не ломаете стены или что-то в этом роде, вы просто складываете что-то (столько, сколько хотите) таким образом, чтобы изменить его внешний вид (и его функциональность). Я думаю, что это слово было выбрано, чтобы подразумевать ненавязчивость, а также что-то необязательное.

2 голосов
/ 05 января 2009

Декоратор «украшает» интерфейс, добавляя дополнительную функциональность к существующим методам, но фактически не добавляя ни одного своего собственного. Украшение не является обязательным для базовой функциональности; в противном случае он был бы встроен в базовый класс.

0 голосов
/ 05 января 2009

Потому что вы добавляете новые функциональные возможности к существующему объекту. По сути, вы «украшаете» объект новым функционалом.

Эй, оставь это гикам, чтобы придумывать имена.

...