Паттерн Декоратор — специальный способ организации модулей в программе, который позволяет подставить какую-то новую функцию прямо в середину цепочки вызовов, тем самым чуть-чуть подкорректировав поведение.
Например, в реальном мире очки для чтения это декоратор. Вы ставите их между вашими глазами и текстом. Глобально взаимодействие ваших глаз и текста не меняется: отражённые световые лучи от страницы книги попадают в ваши зрачки, что с очками, что без них. Но очки располагаются посередине: они принимают лучи на вход и преломляют их, передавая дальше вам в глаза уже изменёнными.
Важной особенностью является тот факт, что очки можно снять. Они не требуют ни модификации вашего тела, ни модификации книги. Вообще никакие условия не нужны, кроме наличия самих очков. А если вы в линзах, то внешний наблюдатель может даже этого не знать.
Класс-декоратор должен быть спроектирован так, чтобы не требовать никаких изменений в объектах, с которыми он работает. Его можно отключить, чаще всего буквально закомментировав одну строку.
В примере ниже программа выведет текст "Привет, мир, в натуре.", и вот это дополнение в конце как раз дописано декоратором. Можно убрать или закомментировать подчёркнутую строчку, не трогая остальной код, для всех внешних вызовов сигнатуры останутся теми же самыми, но выводиться будет уже просто "Привет, мир".
В декораторы можно прятать логику, которую буквально навешивают поверх основной функции программы. Например, проверку прав на выполнение операции. Перевод на другой язык, логирование, поддержку обратной совместимости при обновлении и так далее.
#dev
#trending: Teenager who has autism waits an hour at Jurong East MRT Station with no train service, mum goes to his aid
"The problem was that he didn’t know what his next step should be. At the same time, he may have been hoping that the train would arrive later." Ms Lydiawati Ismail said of her son who has autism.
🚇https://tdy.sg/3NajJLe
@todayonlinesg
#trending: Father-daughter dance at competition goes viral, viewers say it made them cry or think of their own dads
They won a “special mention” medal and they were also the oldest and youngest participants in the open category, Mr Jay Sng said.
🤸♂️🧑🧒https://tdy.sg/3XkEgla
@todayonlinesg
#trending: S'pore woman's biggest culture shock living in Sweden? Many couples skip marriage even after kids
Ms Wynnette Yip said that she has been in a relationship with her Swedish partner for eight years and often faces questions from friends and family in Singapore on whether her other half was ever going to propose to her or was simply "wasting (her) time".
🇸🇪https://tdy.sg/3ZpFcHx
@todayonlinesg
#trending: 'Full-on racial harmony' — video of Chinese S'porean youths loving Tamil movie goes viral
Many netizens found it refreshing and heartwarming to see Chinese youths so thoroughly enjoying a film of a different language and culture, with users calling their reactions "cute" and "awesome".
🎬https://tdy.sg/3AQNKwP
@todayonlinesg
#trending: 'Completely drained' — British expat's tale of long hours in China's tech sector goes viral
Many social media users in China were amused to see a foreigner grappling with the demanding work culture in their country.
🇨🇳https://tdy.sg/4egs2Ry
@todayonlinesg
#trending: S'pore non-profit that staged TikTok video of man harassing woman sparks debate on when to step in to help others
TikTok users have lauded real-life passers-by who chose to intervene and help the woman, not realising that it was a staged incident. They said that it is important to look out for each other.
➡️https://tdy.sg/3Xcbx1X
@todayonlinesg
#trending: SIA flight attendant praised as 'angel' for helping passenger clean jeans using own stain remover pen
In a "friendly chat" with a cabin crew member she referred to as Aiden, Ms Paige Parker asked him "almost jokingly" if SIA had any stain removers, expecting the answer would be no.
✈️https://tdy.sg/3AxJC4T
@todayonlinesg
#trending: Is Amsterdam safer? S'porean woman's reasons for moving to the Netherlands spark debate online
Aside from her safety concerns, the weather was a major factor, as she found Singapore too hot and humid. "I can't be sweating perpetually," she wrote.
➡️https://tdy.sg/3Ti9EQf
@todayonlinesg
#trending: Japanese ramen shop ranks Singaporeans’ spice tolerance as ‘mid’; netizens agree
Out of 10 levels, Singapore and Malaysia are ranked in the middle while Indonesia is at the top with the highest spice tolerance.
➡️https://tdy.sg/4fNFrBQ
#trending: Influencer's praise of NDP crowd control leaves S'poreans grateful for reminder 'we are so blessed'
Ms Francesca Tanmizi, an Indonesian who lives in Singapore, told her 316,000 TikTok followers she was wowed by the efficiency of NDP crowd control, the speedy cleanup of rainwater and the friendliness of the personnel involved.
🇸🇬https://tdy.sg/3WByhIk
@todayonlinesg
#trending: New S'pore teen character in Marvel comic book sounds like burnt-out student, say netizens
A Redditor teased that the character's powers could be “the result of years of training by her kiasu Tiger mum under the Singapore academic system” rather than an actual superpower.
👩🎓https://tdy.sg/4dFadep
@todayonlinesg
#trending: Netizens praise Jetstar Asia's 20th anniversary song for celebrating uniquely Singaporean traits
One viewer wrote: "Please consider (Mr Van Der Ven) for NDP theme song. He writes his own music and can supply 20 different types of aunties."
➡️https://tdy.sg/3WqSn85