Middle+
Τι είναι τα δομικά μοτίβα σχεδίασης;
sobes.tech AI
Απάντηση από AI
Τα δομικά μοτίβα σχεδίασης περιγράφουν πώς οι κλάσεις και τα αντικείμενα μπορούν να συνδυαστούν για την κατασκευή μεγαλύτερων δομών. Βοηθούν στην οργάνωση της αλληλεπίδρασης μεταξύ αντικειμένων, καθιστώντας το σύστημα πιο ευέλικτο και εύκολο στη συντήρηση.
Μερικά κοινά δομικά μοτίβα:
- Adapter (Προσαρμογέας): Επιτρέπει σε κλάσεις με ασύμβατα interfaces να συνεργάζονται.
- Bridge (Γέφυρα): Διαχωρίζει την αφαιρετικότητα από την υλοποίησή της, επιτρέποντας και τα δύο να αλλάζουν ανεξάρτητα.
- Composite (Σύνθετο): Επιτρέπει την αντιμετώπιση μιας ομάδας αντικειμένων ως ένα μόνο αντικείμενο.
- Decorator (Διακοσμητής): Προσθέτει δυναμικά νέα συμπεριφορά στα αντικείμενα χωρίς να αλλάζει τον κώδικά τους.
- Facade (Πρόσοψη): Παρέχει μια ενοποιημένη διεπαφή σε ένα σύνολο διεπαφών σε ένα υποσύστημα.
- Flyweight (Flyweight): Εξοικονομεί μνήμη μοιράζοντας κοινή κατάσταση μεταξύ πολλών μικρών αντικειμένων.
- Proxy (Μεσολαβητής): Παρέχει έναν αντικαταστάτη για ένα άλλο αντικείμενο για τον έλεγχο της πρόσβασης σε αυτό.
Παράδειγμα χρήσης του μοτίβου Decorator:
# Βασικό συστατικό
class Coffee:
def cost(self):
return 5
def description(self):
return "Κανονικός καφές"
# Βασικός διακοσμητής
class CoffeeDecorator:
def __init__(self, coffee):
self._coffee = coffee
def cost(self):
return self._coffee.cost()
def description(self):
return self._coffee.description()
# Συγκεκριμένος διακοσμητής
class MilkDecorator(CoffeeDecorator):
def cost(self):
return self._coffee.cost() + 2
def description(self):
return self._coffee.description() + ", με γάλα"
# Χρήση
my_coffee = Coffee()
print(my_coffee.description(), "-", my_coffee.cost()) # Κανονικός καφές - 5
coffee_with_milk = MilkDecorator(my_coffee)
print(coffee_with_milk.description(), "-", coffee_with_milk.cost()) # Κανονικός καφές, με γάλα - 7
Αυτά τα μοτίβα παρέχουν ευελιξία μέσω της χρήσης σύνθεσης αντικειμένων αντί της κληρονομικότητας, επιτρέποντας αλλαγές στο σύστημα χωρίς να αλλάξει ο υπάρχων κώδικας.