Κατανόηση των διακοσμητών στην Python
Οι διακοσμητές είναι ένα σχέδιο σχεδίασης που σας επιτρέπει να τροποποιήσετε ή να επεκτείνετε τη συμπεριφορά ενός αντικειμένου χωρίς να αλλάξετε την αρχική υλοποίηση του αντικειμένου. Με άλλα λόγια, οι διακοσμητές σάς επιτρέπουν να προσθέσετε νέα λειτουργικότητα σε ένα υπάρχον αντικείμενο χωρίς να τροποποιήσετε τον πυρήνα του. Το νέο αντικείμενο έχει τις ίδιες μεθόδους και χαρακτηριστικά με το αρχικό αντικείμενο, αλλά έχει επίσης κάποια πρόσθετη λειτουργικότητα ή συμπεριφορά που παρέχεται από τον διακοσμητή.
Για παράδειγμα, ας υποθέσουμε ότι έχετε μια κλάση που ονομάζεται `Car` που έχει μια μέθοδο που ονομάζεται `drive ()» που κάνει το αυτοκίνητο να κινείται. Θα μπορούσατε να δημιουργήσετε έναν διακοσμητή που ονομάζεται «SpeedLimitDecorator» που τροποποιεί τη μέθοδο «drive()» για να περιορίσει την ταχύτητα του αυτοκινήτου. Το «SpeedLimitDecorator» θα έπαιρνε το αρχικό αντικείμενο «Car» ως όρισμα και θα επέστρεφε ένα νέο αντικείμενο «Car» που έχει τις ίδιες μεθόδους και χαρακτηριστικά με το αρχικό «Car», αλλά με την πρόσθετη λειτουργία του περιορισμού της ταχύτητας.
Εδώ είναι ένα παράδειγμα για το πώς μπορείτε να χρησιμοποιήσετε ένα διακοσμητή στην Python:
```
class Car:
def drive(self):
print("The car is drive")
class SpeedLimitDecorator:
def __init__(self, car):
self. car = car
def drive(self):
self.car.drive()
print("The car is now limited to 50 mph")
car = Car()
speed_limited_car = SpeedLimitDecorator(car)
speed_limited_car.drive() # prints "Το αυτοκίνητο οδηγεί" και "Το αυτοκίνητο περιορίζεται τώρα στα 50 mph"
``` )» μέθοδος του αρχικού αντικειμένου «Car» για τον περιορισμό της ταχύτητάς του. Η κλάση `SpeedLimitDecorator` έχει επίσης τη δική της μέθοδο `drive()` που καλεί την αρχική μέθοδο `drive()` του τυλιγμένου αντικειμένου, αλλά με τον πρόσθετο περιορισμό των 50 mph.
Τα Decorators είναι ένα ισχυρό εργαλείο για την τροποποίηση ή την επέκταση υπαρχόντων αντικειμένων χωρίς να αλλάξουν την αρχική τους εφαρμογή. Μπορούν να χρησιμοποιηθούν για την προσθήκη νέας λειτουργικότητας, την τροποποίηση συμπεριφοράς ή ακόμα και την αντικατάσταση τμημάτων της υλοποίησης ενός αντικειμένου χωρίς να επηρεαστεί ο υπόλοιπος κώδικας.



