Паттерн Декоратор — специальный способ организации модулей в программе, который позволяет подставить какую-то новую функцию прямо в середину цепочки вызовов, тем самым чуть-чуть подкорректировав поведение.
Например, в реальном мире очки для чтения это декоратор. Вы ставите их между вашими глазами и текстом. Глобально взаимодействие ваших глаз и текста не меняется: отражённые световые лучи от страницы книги попадают в ваши зрачки, что с очками, что без них. Но очки располагаются посередине: они принимают лучи на вход и преломляют их, передавая дальше вам в глаза уже изменёнными.
Важной особенностью является тот факт, что очки можно снять. Они не требуют ни модификации вашего тела, ни модификации книги. Вообще никакие условия не нужны, кроме наличия самих очков. А если вы в линзах, то внешний наблюдатель может даже этого не знать.
Класс-декоратор должен быть спроектирован так, чтобы не требовать никаких изменений в объектах, с которыми он работает. Его можно отключить, чаще всего буквально закомментировав одну строку.
В примере ниже программа выведет текст "Привет, мир, в натуре.", и вот это дополнение в конце как раз дописано декоратором. Можно убрать или закомментировать подчёркнутую строчку, не трогая остальной код, для всех внешних вызовов сигнатуры останутся теми же самыми, но выводиться будет уже просто "Привет, мир".
В декораторы можно прятать логику, которую буквально навешивают поверх основной функции программы. Например, проверку прав на выполнение операции. Перевод на другой язык, логирование, поддержку обратной совместимости при обновлении и так далее.
#dev
"In a tragic accident, a life was lost in an instant—without any fault of his own.
This heartbreaking event is a stark reminder of how fragile life can be.
It underscores the critical importance of life insurance. To truly protect your loved ones, you should have coverage that's at least 250 times your monthly income.
This ensures that your family's financial stability is preserved, even in your absence.
The best time to secure life insurance was yesterday. The next best time is NOW."
#Accident
🇺🇸🏎 Au moins 27 véhicules se sont heurtés lors d'une course automobile Nascar aux États-Unis. La course a été temporairement suspendue, puis a repris.
#accident#voiture#étatsunis
🏎 Le bolide du pilote français Pierre Gasly s’est retourné lors du Grand Prix de Miami comptant pour le championnat du monde de Formule 1.
Il est entré en collision avec le véhicule du Néo-Zélandais Liam Lawson, de Racing Bulls. Les deux pilotes ont été contraints à abandonner la course.
#formule1#accident
🇮🇷 Un hélicoptère militaire s'est écrasé en Iran dans la province d'Ispahan à cause d'une défaillance technique. En conséquence, quatre personnes sont décédées, a signalé l'agence de presse IRNA.
Le pilote et le copilote sont morts. D’après les pompiers, deux vendeurs ont également péri.
#iran#hélicoptère#accident
🇯🇵 Un accident de la route impliquant plusieurs véhicules, dont un minibus transportant des écoliers, s'est produit dans la préfecture japonaise de Fukushima, a signalé la chaîne NHK.
D’après les informations de la police, l'accident a eu lieu près de la localité d'Inawashiro. En conséquence, au moins une personne est décédée et 26 autres ont été blessées, dont certaines gravement.
#japon#accident#bilan
Série noire en Espagne : un second accident grave ferroviaire 48 h après le drame d'Adamuz.
En Catalogne (Gelida, près de Barcelone), un train de banlieue a heurté un mur de soutènement effondré sur les voies (probablement à cause des pluies), causant 1 mort (le conducteur) et au moins 15 blessés, dont 4 graves.
Cela survient deux jours après la grave catastrophe ferroviaire d'Adamuz (Andalousie), où une collision entre deux trains à grande vitesse a fait 42 morts et plus de 150-292 blessés (dont une quarantaine graves).
Ce drame est la conséquence d'un déraillement dû à un défaut sur les rails (joint de rail cassé ou rupture de 30 cm signalée), possiblement lié à l'usure ou à la hausse du trafic.
L’Espagne est sous le choc.
Trois jours de deuil national.
La population oscille entre deuil, entraide et colère sur la sécurité ferroviaire. Gelida renforce le sentiment d’insécurité nationale.
https://www.lefigaro.fr/international/espagne-un-train-heurte-un-mur-effondre-sur-les-voies-en-catalogne-plusieurs-blesses-20260120
#ferroviaire#Espagne
#accident
Rejoignez-nous 👇
https://t.me/nemesisiam
🇧🇬 En Bulgarie, deux personnes ont été tuées et neuf autres blessées dans un accident de la route impliquant un bus ukrainien, rapporte la télévision nationale bulgare.
Le bus touristique s’est arrêté en raison d’un manque de carburant, et lorsque les passagers sont descendus, il est reparti en marche arrière de manière incontrôlée, les percutant. Les faits se sont produits près du poste-frontière de Malko Tarnovo, non loin de la frontière bulgaro-turque.
#accident#victimes#route
🇮🇳 Au moins 10 personnes ont été tuées plus de 40 autres blessées à la suite d’une explosion dans une centrale thermique de la société Vedanta Limited dans l’État indien du Chhattisgarh, ont fait savoir les autorités de l’État.
Selon les premières informations, l’explosion s’est produite dans une chaudière de la centrale. Une opération de sauvetage est en cours, des personnes pourraient se trouver sous les décombres.
Les blessés ont été transportés dans les hôpitaux voisins. Les autorités de l’État ont commencé à déterminer les causes de la catastrophe.
#inde#accident#morts
#跳伞 有风险,入行续谨慎。网红迪迪跳伞疑似受伤。万幸无大碍 #事故
#Skydiving is risky, proceed with caution. Internet celebrity Didi appeared to be injured during a skydiving incident. Fortunately, he is unharmed. #Accident
🇧🇩 Au moins 18 personnes ont perdu la vie après qu’un bus de passagers est tombé dans le fleuve Padma, dans le centre du Bangladesh, rapporte le journal The Daily Star.
Le bus, transportant environ 40 passagers, est tombé dans le fleuve alors qu’il se trouvait sur un ponton en attente d’embarquement sur un ferry. Onze passagers ont réussi à regagner la rive par leurs propres moyens.
Les secours ont remonté le bus du fond du fleuve six heures après l’accident, retrouvant 18 corps sans vie. Plusieurs passagers sont toujours portés disparus.
#bangladesh#bus#accident
🇧🇮 Les explosions survenues dans la capitale économique du Burundi, Bujumbura, ont été causées par un incendie dans un dépôt de munitions, a rapporté l’Agence France-Presse, citant le porte-parole de l’armée.
Un grave accident électrique dans le magasin des munitions de la FDNB [Force de défense nationale du Burundi] basé à Musaga est à l'origine des explosions entendues en ce moment dans la capitale économique Bujumbura,
a commenté le porte-parole de l'armée burundaise Gaspard Baratuza.
#burundi#explosions#accident