EMZETT.
Войти

Паттерн «Декоратор»

Коротко: Паттерн «Декоратор» расширяет объект дополнительными функциями, оборачивая его в объект-обёртку с тем же интерфейсом, — без изменения класса и наследования от него.

Подробнее: Несколько декораторов можно вкладывать друг в друга, например журналирование, кеширование, проверка прав и измерение времени вокруг одной функции. В Python для этого есть собственный синтаксис (@decorator), в JavaScript/TypeScript — декораторы для классов, Java применяет его с потоками (new BufferedReader(new FileReader(...))).

Подробности

import time
from functools import wra

См. также: функция высшего порядка, аннотации, паттерн «Стратегия», наследование