Comments 18
А я бы не стал так кнопки делать, сделал бы лучше как в WPF, хоть это и заняло бы больше времени. На С++ и того проще, все решается множественным наследованием и стратегиями поведения.
-1
Вы не решите эту проблему множественным наследованием. Про это я писал в описании. Точнее решите, породив кучу классов. При этом, если понадобится какое-либо изменение одного декоратора, вам понадобится менять все классы. А декоратором может быть даже и не десять.
В случае применения паттерна «Декоратор» Вам нужно будет лишь изменить один класс.
И да. Питон поддерживает множественное наследование. Поэтому язык тут не причем.
В случае применения паттерна «Декоратор» Вам нужно будет лишь изменить один класс.
И да. Питон поддерживает множественное наследование. Поэтому язык тут не причем.
+3
На счёт WPF. Именно в нём паттерн декоратор используется очень плотно, и очень многие встроенные возможности WPF сделаны как паттерн декоратор. В частности в механизм Addorner-ов.
Автору спасибо. Хоть и знаком с предметом, но всё равно интересно!
Автору спасибо. Хоть и знаком с предметом, но всё равно интересно!
+3
не три факториал, а два в кубе (если не считать оригинал, то два в кубе минус единица)
+2
«Два в кубе — 1» равно 7.
Вы пропустили класс «Кнопка_С_Надписью_И_Рамкой» :-)
Вы пропустили класс «Кнопка_С_Надписью_И_Рамкой» :-)
+1
Отдельное спасибо за пример на Python! — обычно мало где их приводят.
И отдельное за хорошую статью!
И отдельное за хорошую статью!
+2
Еще неплохо бы вспомнить что одно из распространенных названий данного шаблона Wraper, что на русском звучит как «Обертка».
0
CSS (: Используется не только в HTML, но и во Flex.
0
Я в примере на питоне, не понял только одного:
Зачем AbstractBlockDecorator наследуется от AbstractBlock?
Зачем AbstractBlockDecorator наследуется от AbstractBlock?
0
Еще одно замечаение если вы заговорили о питоне. В нем на уровне синтаксиса введено понятие декоратора функций www.python.org/dev/peps/pep-0318/ и классов www.python.org/dev/peps/pep-3129/ и важно не запутаться в терминологии.
0
объясни мне зачем в имени интерфейса использовать слово Abstract, а потом писать:
>AbstractBlockDectorator — абстрактный класс декоратора блоков. Обратите внимание, что это именно абстрактный
>класс, а не интерфейс.
не стОит запутывать людей.
>AbstractBlockDectorator — абстрактный класс декоратора блоков. Обратите внимание, что это именно абстрактный
>класс, а не интерфейс.
не стОит запутывать людей.
-1
Замечательная статья. Спасибо. Как раз разбиралась с этим шаблоном. Теперь буду реализовывать! Надеюсь, что получиться. На первый взгляд, вроде, все не так уж и сложно..)
0
Sign up to leave a comment.
Articles
Change theme settings
Паттерн проектирования «Декоратор» / «Decorator»