Почему шаблон дизайна Decorator называется “Декоратор”?

StackOverflow https://stackoverflow.com/questions/414251

Вопрос

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

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

Это было полезно?

Решение

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

РЕДАКТИРОВАТЬ: справочную страницу в разделе " Разработка шаблонов в C # " Стивен Джон Метскер:

  

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top