Почему шаблон дизайна Decorator называется “Декоратор”?
-
03-07-2019 - |
Вопрос
Кто-нибудь может объяснить, почему название "Декоратор" было выбрано для функциональности, передаваемой шаблоном дизайна Decorator?
Я всегда находил это название довольно вводящим в заблуждение, потому что decorator и marking interface звучат для меня очень похоже по своему назначению.Однако, в то время как маркер на самом деле "ничего не делает", декораторы, безусловно, это делают.Но термин "украшения" для меня подразумевает пассивность, чего на самом деле нет в случае с этим рисунком, который используется для добавления функциональности.
Решение
Я считаю, что происхождение термина происходит от примера использования украшения пользовательского интерфейса различными компонентами, например полосами прокрутки, кнопками закрытия и т. д.
РЕДАКТИРОВАТЬ: справочную страницу в разделе " Разработка шаблонов в C # " Стивен Джон Метскер:
Одно из оригинальных приложений DECORATOR (и, вероятно, приложение, из которого DECORATOR получает свое имя) лежит в создании компонентов GUI.
Другие советы
Я думаю, что аналогия в том, что когда вы украшаете дом, вы на самом деле не ломаете стены или что-то в этом роде, вы просто складываете что-то (столько, сколько хотите) таким образом, чтобы изменить его внешний вид (и его функциональность). Я думаю, что это слово было выбрано, чтобы подразумевать ненавязчивость, а также что-то необязательное.
Декоратор "украшает" интерфейс, добавляя дополнительную функциональность к существующим методам, но не добавляя ни одного собственного. Украшение не является обязательным для базовой функциональности; в противном случае он был бы встроен в базовый класс.
Потому что вы добавляете новую функциональность к существующему объекту.По сути, вы "украшаете" объект новой функциональностью.
Эй, предоставь гикам придумывать имена.