EMZETT.
Увійти

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

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

Докладніше: Кілька декораторів можна вкладати один в одного, наприклад журналювання, кешування, перевірка прав і вимірювання часу навколо однієї функції. У Python для цього є власний синтаксис (@decorator), у JavaScript/TypeScript — декоратори для класів, Java застосовує його з потоками (new BufferedReader(new FileReader(...))).

Подробиці

import time
from functools import wra

Див. також: функція вищого порядку, анотації, патерн «Стратегія», успадкування