Κυριακή, 17 Σεπτεμβρίου 2017

Composite Design Pattern



Με το Composite Pattern μπορείς να χειριστείς αντικείμενα ή σύνολα αντικειμένων με τον ίδιο τρόπο στον client κώδικα. Όπως δείχνει και το διάγραμμα UML έχει δενδροειδής μορφή με κόμβους και φύλλα. Για να χρησιμοποιήσουμε αυτό το πρότυπο αρχικά θα πρέπει να έχουμε μια υπερκλάση (abstract ή interface) η οποία θα έχει τουλάχιστον μια function κοινή.



Στο παράδειγμα που έχω η κοινή αυτή function είναι η songInfo η οποία μας επιστρέφει πληροφορίες για το τραγούδι (τίτλο και όνομα μπάντας). Αρχικά ας φτιάξουμε τα φύλλα του δέντρου, την κλάση εκείνη δηλαδή η οποία αναφέρεται ξεχωριστά για κάθε τραγούδι. Σε αυτή τη περίπτωση το μόνο που χρειάζεται να κάνουμε είναι να δώσουμε τίτλο και όνομα μπαντας στον constructor της κλάσης.


Στο επόμενο βήμα φτιάχνουμε τους κόμβους του δέντρου μας, τα group δηλαδή με τα τραγούδια. Εδώ πρέπει να υλοποιήσουμε την songInfo, αφού είναι κληρονομιά της abstract υπερκλάσης αλλά και functions με τις οποίες θα μπορούμε να προσθέτουμε ή να αφαιρούμε αντικείμενα. 


Έτσι στην κλάση songGroup έχουμε την addSong η οποία δέχεται ως όρισμα instance αντικειμένου SongComposite αλλά και την removeSong η οποία δέχεται σαν όρισμα τον αριθμό του τραγουδιού που θέλουμε να αφαιρέσουμε.

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου