Pull to refresh

Comments 18

А я бы не стал так кнопки делать, сделал бы лучше как в WPF, хоть это и заняло бы больше времени. На С++ и того проще, все решается множественным наследованием и стратегиями поведения.
Вы не решите эту проблему множественным наследованием. Про это я писал в описании. Точнее решите, породив кучу классов. При этом, если понадобится какое-либо изменение одного декоратора, вам понадобится менять все классы. А декоратором может быть даже и не десять.

В случае применения паттерна «Декоратор» Вам нужно будет лишь изменить один класс.

И да. Питон поддерживает множественное наследование. Поэтому язык тут не причем.
На счёт WPF. Именно в нём паттерн декоратор используется очень плотно, и очень многие встроенные возможности WPF сделаны как паттерн декоратор. В частности в механизм Addorner-ов.

Автору спасибо. Хоть и знаком с предметом, но всё равно интересно!

не три факториал, а два в кубе (если не считать оригинал, то два в кубе минус единица)
Да. Вы правы. Комбинаторика блин :) Спасибо за замечание.
«Два в кубе — 1» равно 7.
Вы пропустили класс «Кнопка_С_Надписью_И_Рамкой» :-)
:) Самое интересное, что народ молчит :) 2 в кубе — 1 = шесть. Конечно, вы правы.
Отдельное спасибо за пример на Python! — обычно мало где их приводят.

И отдельное за хорошую статью!
В английской википедии есть примеры на python практически ко всем паттернам GOF. Советую.
Сам по ним разбирался после прочтения книги.
Еще неплохо бы вспомнить что одно из распространенных названий данного шаблона Wraper, что на русском звучит как «Обертка».
Спасибо. Добавил в пост.
CSS (: Используется не только в HTML, но и во Flex.
Я в примере на питоне, не понял только одного:

Зачем AbstractBlockDecorator наследуется от AbstractBlock?
Это и есть основная идея паттерна — сделать наложения декоратора абсолютно прозрачным для клиента.
Ух ты спасибо. Не знал. Но Вы должны понимать, что «говорил» я о питоне, только в рамках реализации конкретного примера :)
объясни мне зачем в имени интерфейса использовать слово Abstract, а потом писать:
>AbstractBlockDectorator — абстрактный класс декоратора блоков. Обратите внимание, что это именно абстрактный
>класс, а не интерфейс.
не стОит запутывать людей.
Замечательная статья. Спасибо. Как раз разбиралась с этим шаблоном. Теперь буду реализовывать! Надеюсь, что получиться. На первый взгляд, вроде, все не так уж и сложно..)
Sign up to leave a comment.

Articles

Change theme settings