Паттерн Декоратор — специальный способ организации модулей в программе, который позволяет подставить какую-то новую функцию прямо в середину цепочки вызовов, тем самым чуть-чуть подкорректировав поведение.
Например, в реальном мире очки для чтения это декоратор. Вы ставите их между вашими глазами и текстом. Глобально взаимодействие ваших глаз и текста не меняется: отражённые световые лучи от страницы книги попадают в ваши зрачки, что с очками, что без них. Но очки располагаются посередине: они принимают лучи на вход и преломляют их, передавая дальше вам в глаза уже изменёнными.
Важной особенностью является тот факт, что очки можно снять. Они не требуют ни модификации вашего тела, ни модификации книги. Вообще никакие условия не нужны, кроме наличия самих очков. А если вы в линзах, то внешний наблюдатель может даже этого не знать.
Класс-декоратор должен быть спроектирован так, чтобы не требовать никаких изменений в объектах, с которыми он работает. Его можно отключить, чаще всего буквально закомментировав одну строку.
В примере ниже программа выведет текст "Привет, мир, в натуре.", и вот это дополнение в конце как раз дописано декоратором. Можно убрать или закомментировать подчёркнутую строчку, не трогая остальной код, для всех внешних вызовов сигнатуры останутся теми же самыми, но выводиться будет уже просто "Привет, мир".
В декораторы можно прятать логику, которую буквально навешивают поверх основной функции программы. Например, проверку прав на выполнение операции. Перевод на другой язык, логирование, поддержку обратной совместимости при обновлении и так далее.
#dev
Beppe #Grillo, confermano fonti vicine, ha avviato una causa per riprendersi il simbolo del Movimento 5 stelle: lui e l'associazione Movimento 5 stelle di Genova hanno notificato un atto di citazione davanti al Tribunale di Roma per rivendicare la titolarità del nome e del simbolo "MoVimento 5 stelle", prima udienza a luglio.
@UltimoraPolitics24
❗️ Beppe #Grillo: "Conte faccia il suo partito, lo chiami Oz e i 22 mandati. Io rivendico il diritto di estinzione del Movimento 5 Stelle."
@UltimoraPolitics
Brigate di cittadinanza e passamontagna, Beppe #Grillo: "Per favore, fermatevi. Era una boutade. Ma è possibile che prendete tutto sul serio?"
@UltimoraPolitics
Manifestazione a Roma contro la precarietà, Beppe #Grillo: "La battaglia sul reddito universale è l'unica da fare. Fate le brigate di cittadinanza, mettetevi il passamontagna e di notte, senza farvi vedere, fate i lavoretti, sistemate i marciapiedi. Reagite!"
@UltimoraPolitics
Beppe #Grillo è stato condannato per diffamazione verso una parlamentare Pd, Cinzia Capano, che era stata ricoverata d'urgenza per un malore nel maggio 2011 e che era stata accusata dal fondatore del M5s di aver disertato l'Aula per boicottare il referendum sull'acqua. Le motivazioni: “La critica non si basi su una menzogna”
@UltimoraPolitics
#Italia
Beppe #Grillo (M5S): "Basta balle sull'energia nucleare. Non sono energia verde, ma marrone. Una centrale emette 250.000 tonnellate di CO2 l'anno, anche se non ne emette nel momento in cui produce energia."
@UltimoraPolitics
Beppe #Grillo e l'armatore Onorato verso il processo per traffico di influenze.
La chat del fondatore #M5S: "Ho attivato Di Maio e Toninelli" (Open)
@UltimoraPolitics
LaPresse - Il garante del #M5S, Beppe #Grillo, è tra gli ospiti del ricevimento organizzato dal nuovo ambasciatore cinese in Italia, Jia Guide, entrato in carica lo scorso gennaio. Grillo è arrivato poco fa a Villa Miani, a Roma, dove si tiene la festa in onore del diplomatico
@UltimoraPolitics