Паттерн Декоратор — специальный способ организации модулей в программе, который позволяет подставить какую-то новую функцию прямо в середину цепочки вызовов, тем самым чуть-чуть подкорректировав поведение.
Например, в реальном мире очки для чтения это декоратор. Вы ставите их между вашими глазами и текстом. Глобально взаимодействие ваших глаз и текста не меняется: отражённые световые лучи от страницы книги попадают в ваши зрачки, что с очками, что без них. Но очки располагаются посередине: они принимают лучи на вход и преломляют их, передавая дальше вам в глаза уже изменёнными.
Важной особенностью является тот факт, что очки можно снять. Они не требуют ни модификации вашего тела, ни модификации книги. Вообще никакие условия не нужны, кроме наличия самих очков. А если вы в линзах, то внешний наблюдатель может даже этого не знать.
Класс-декоратор должен быть спроектирован так, чтобы не требовать никаких изменений в объектах, с которыми он работает. Его можно отключить, чаще всего буквально закомментировав одну строку.
В примере ниже программа выведет текст "Привет, мир, в натуре.", и вот это дополнение в конце как раз дописано декоратором. Можно убрать или закомментировать подчёркнутую строчку, не трогая остальной код, для всех внешних вызовов сигнатуры останутся теми же самыми, но выводиться будет уже просто "Привет, мир".
В декораторы можно прятать логику, которую буквально навешивают поверх основной функции программы. Например, проверку прав на выполнение операции. Перевод на другой язык, логирование, поддержку обратной совместимости при обновлении и так далее.
#dev
#Elezioni#NuovaZelanda
Oggi si vota in Nuova Zelanda!
Abbiamo creato delle schede in cui potete vedere i partiti principali e dove si posizionano ideologicamente.
🔽
https://tinyurl.com/5n6e7v5s
@OsservatorioEsteri
#Lituania#IndoPacifico
Il governo lituano ha pubblicato il primo documento comprensivo sulla “Strategia lituana per l’Indo-Pacifico” della sua storia.
Tale strategia poggerà su tre pilastri:
•Potenziamento della collaborazione e del dialogo politico con le nazioni dell’Indo-Pacifico, per un miglioramento delle proprie competenze ed esperienze nel contrasto alle minacce ibride e nei settori della difesa e della cybersicurezza.
In tal senso, fondamentale è il riferimento alla #Cina: “La sua attitudine rispetto ai diritti umani e l’ordine internazionale fondato su regole costituisce una minaccia significativa per le democrazie libere ed aperte.”
•Costruire e sviluppare partnerships economiche nei settori del commercio, degli investimenti, della scienza, delle tecnologie e dell’innovazione. Con una particolare attenzione alla diversificazione delle catene di approvvigionamento e della resistenza alla coercizione di natura economica.
Con riguardo a #Taiwan, la Lituania ambisce a consolidare la cooperazione reciproca nell’industria tecnologica, nel rafforzamento delle proprie capacità di difesa e nella promozione della democrazia.
•Soft power, stabilendo piattaforme per un consolidamento delle relazioni people-to-people, per gli scambi nelle aree della scienza, della cultura, dell’educazione e dell’empowerment giovanile e femminile e per una promozione dello status della Lituania come uno Stato democratico e progressista che attragga talenti.
Qui potete trovare il testo completo, comprensivo del disegno relativo alle future relazioni con #Giappone, #NuovaZelanda, #Australia, #CoreadelSud ed #India.
@OsservatorioEsteri
#ProssimeElezioni🗓
Le elezioni che seguiremo prossimamente sono:
🇧🇬#Bulgaria: #parlamentari, il 19 aprile;
🇬🇧🏴#RegnoUnito: parlamentari in #Scozia, il 7 maggio;
🇬🇧🏴 Regno Unito: parlamentari in #Galles, il 7 maggio;
🇨🇻#CapoVerde: parlamentari, il 17 maggio;
🇪🇸#Spagna: #regionali in #Andalusia, il 17 maggio;
🇨🇾#Cipro: parlamentari, il 24 maggio;
🇮🇹#Italia: #comunali, il 24 e il 25 maggio;
🇨🇴#Colombia: #presidenziali, il 31 maggio;
🇦🇲#Armenia: parlamentari, il 7 giugno;
🇮🇸#Islanda: #referendum, il 29 agosto;
🇭🇹#Haiti: presidenziali e parlamentari, il 30 agosto;
🇩🇪#Germania: #statali in #SassoniaAnhalt, il 6 settembre;
🇸🇪#Svezia: parlamentari, il 13 settembre;
🇩🇪 Germania: statali a #Berlino e nel #MeclemburgoPomeraniaAnteriore, il 20 settembre;
🇲🇦#Marocco: parlamentari, il 23 settembre;
🇱🇻#Lettonia: parlamentari, il 3 ottobre;
🇧🇦#BosniaErzegovina: parlamentari e presidenziali, il 4 ottobre;
🇧🇷#Brasile: presidenziali e parlamentari, il 4 ottobre;
🇺🇸#StatiUniti: parlamentari e statali, il 3 novembre;
🇳🇿#NuovaZelanda: parlamentari, il 7 novembre;
🇧🇬 Bulgaria: presidenziali, l'8 novembre;
🇨🇻 Capo Verde: presidenziali, il 15 novembre;
🇦🇺#Australia: statali nel #Victoria, il 28 novembre.
Sono segnate in grassetto le elezioni previste nel corso del mese di aprile.
@TuttoElezioni
#ProssimeElezioni🗓
❗️Calendario aggiornato
Le elezioni che seguiremo prossimamente sono:
🇵🇪#Perù: #presidenziali e #parlamentari, il 12 aprile;
🇭🇺#Ungheria: parlamentari, il 12 aprile;
🇧🇬#Bulgaria: parlamentari, il 19 aprile;
🇬🇧🏴#RegnoUnito: parlamentari in #Scozia, il 7 maggio;
🇬🇧🏴 Regno Unito: parlamentari in #Galles, il 7 maggio;
🇨🇻#CapoVerde: parlamentari, il 17 maggio;
🇪🇸#Spagna: #regionali in #Andalusia, il 17 maggio;
🇨🇾#Cipro: parlamentari, il 24 maggio;
🇮🇹#Italia: #comunali, il 24 e il 25 maggio;
🇨🇴#Colombia: presidenziali, il 31 maggio;
🇦🇲#Armenia: parlamentari, il 7 giugno;
🇮🇸#Islanda: #referendum, il 29 agosto;
🇭🇹#Haiti: presidenziali e parlamentari, il 30 agosto;
🇩🇪#Germania: #statali in #SassoniaAnhalt, il 6 settembre;
🇸🇪#Svezia: parlamentari, il 13 settembre;
🇩🇪 Germania: statali a #Berlino e nel #MeclemburgoPomeraniaAnteriore, il 20 settembre;
🇲🇦#Marocco: parlamentari, il 23 settembre;
🇱🇻#Lettonia: parlamentari, il 3 ottobre;
🇧🇦#BosniaErzegovina: parlamentari e presidenziali, il 4 ottobre;
🇧🇷#Brasile: presidenziali e parlamentari, il 4 ottobre;
🇳🇿#NuovaZelanda: parlamentari, il 7 novembre;
🇺🇸#StatiUniti: #parlamentari e #statali, il 3 novembre;
🇧🇬 Bulgaria: presidenziali, l'8 novembre;
🇨🇻 Capo Verde: presidenziali, il 15 novembre;
🇦🇺#Australia: statali nel #Victoria, il 28 novembre.
Sono segnate in grassetto le elezioni previste nel corso del mese di aprile.
@TuttoElezioni