Dekorators (angļu: decorator) programmēšanā ir funkcija vai klase, kas paplašina citu funkcijas vai metodes funkcionalitāti, nemainot tās pamata kodu. Tas ļauj pievienot papildu uzvedību (piemēram, validāciju, kešošanu, loggēšanu) "dekorētajai" funkcijai.
Galvenās iezīmes:
- Atkārtota lietojamība – vienu dekoratoru var lietot vairākām funkcijām.
- Koda tīrība – atdala papildu loģiku no pamatfunkcionalitātes.
- Izmanto @ simbolu – daudzās valodās (piemēram, Python) dekoratorus lieto ar `@dekoratora_vārds` sintaksi.
Piemēri Python valodā:
1. Vienkāršs dekorators (laika mērīšana):
python
import time
def meri_laiku(func):
def wrapper():
sakums = time.time()
func()
beigas = time.time()
print(f"Funkcija izpildījās {beigas - sakums:.2f} sekundes")
return wrapper
@meri_laiku
def sveiciens():
time.sleep(1)
print("Sveiki!")
sveiciens()
Izvade:
Sveiki!
Funkcija izpildījās 1.00 sekundes
2. Dekorators ar argumentiem:
python
def atkartot(n=2):
def dekorators(func):
def wrapper(args, kwargs):
for _ in range(n):
func(args, kwargs)
return wrapper
return dekorators
@atkartot(n=3)
def drukat_tekstu(teksts):
print(teksts)
drukat_tekstu("Python")
Izvade:
Python
Python
Python
3. Iebūvēts dekorators (piemēram, `@staticmethod`):
python
class Klase:
@staticmethod
def statiska_metode():
print("Šī ir statiska metode")
Klase.statiska_metode() Izvada: "Šī ir statiska metode"
Citas valodas:
- JavaScript/TypeScript – dekoratori lietojami klasēs (piemēram, Angular, NestJS).
- C – atribūti (attributes) veic līdzīgu lomu.
- Java – anotācijas (annotations).
Kopsavilkums: Dekoratori ir programmēšanas modelis, kas ļauj modificēt funkciju/metodes darbību, neizmainot to oriģinālo kodu, sekmējot modularitāti un koda uzturēšanu.
Jūsų pataisymai bus išsiųsti moderatorių peržiūrai, jei informacija tikslesnė/taisyklingesnė
ji bus patalpinta vietoj esamos.