Java Design Patterns | Java Development Journal

0
Java Design Patterns |  Java Development Journal

Σε αυτό το άρθρο, θα καταλάβουμε τι είναι ένα σχέδιο σχεδίασης και δημοφιλής Μοτίβα σχεδίασης Javaτα μοτίβα σχεδίασης GoF, τι τα κάνει τόσο σημαντικά για το σχεδιασμό στοιχείων λογισμικού και ποιες είναι οι διαφορετικές κατηγορίες των μοτίβων σχεδίασης όσον αφορά τα δημιουργικά, δομικά και συμπεριφορικά μοτίβα σχεδίασης.

1. Java Design Patterns

ο Σχεδιαστικά πρότυπα είναι λύσεις στα πιο συχνά και πιο συχνά εμφανιζόμενα προβλήματα του λογισμικού. Εφαρμόζουμε αυτά τα μοτίβα όταν σχεδιάζουμε λογισμικό. Μπορούμε να τα σκεφτούμε ως προσχέδια που μπορούμε να προσαρμόσουμε για να λύσουμε ένα πρόβλημα σχεδιασμού στο λογισμικό μας. Αυτά τα μοτίβα εμφανίστηκαν μετά από εξαιρετική δουλειά πολλών επαγγελματιών λογισμικού που συνόψισαν την εκμάθησή τους σχετικά με τον τρόπο επίλυσης προκλήσεων σχεδιασμού λογισμικού.

ο Σχεδιαστικά πρότυπα δεν είναι κώδικας ή βιβλιοθήκη, είναι οδηγίες για την επίλυση ενός συγκεκριμένου προβλήματος με συγκεκριμένο τρόπο και συγκεκριμένο πλαίσιο. Δεν είναι αναγκασμένα και μπορεί κανείς να επιλέξει να μην τα χρησιμοποιήσει. Πρέπει να αναλύσουμε τα σχεδιαστικά μας προβλήματα και να δούμε αν η λίστα των μοτίβων μπορεί να λύσει τους. Πολλοί προγραμματιστές χρησιμοποιούν σχέδια σχεδίασης χωρίς καν να τα προσέχουν.

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

2. Από τι αποτελείται το Σχέδιο Μοτίβο;

Τα Μοτίβα Σχεδίασης περιλαμβάνουν μια δήλωση προβλήματος και μια λύση σε αυτό, εξηγεί επίσης πώς η λύση μπορεί να λύσει αποτελεσματικά το πρόβλημα. Κάθε ένα από τα επερχόμενα μοτίβα σχεδίασης θα εξηγήσει το πρόβλημα και πώς το μοτίβο μπορεί να βοηθήσει στην εύρεση της λύσης σε αυτό. Το σχέδιο σχεδίασης θα εμφανίσει επίσης τα διαγράμματα κλάσης/ακολουθίας για να δείξει πώς αυτές οι διεπαφές και οι κλάσεις σχετίζονται μεταξύ τους και πώς μπορούν να συνεργαστούν για να βρουν μια λύση.

Τελευταίο, ωστόσο εξίσου σημαντικό, θα έχει επίσης ένα παράδειγμα κώδικα για να διευκολύνει την πλήρη κατανόηση για τους αναγνώστες. Σε ορισμένα σημεία, τα μοτίβα σχεδίασης θα δίνουν επίσης το παράδειγμα μιας συγκεκριμένης γλώσσας και των βιβλιοθηκών/API τους όπου έχουν εφαρμοστεί αυτά τα μοτίβα. Για παράδειγμα, το μοτίβο σχεδίασης Builder (δημιουργικό) έχει χρησιμοποιηθεί ευρέως στην Java και μπορούμε να το πάρουμε StringBuilder ως παράδειγμα.

3. Γιατί πρέπει να μάθω μοτίβα σχεδίασης;

Όπως αναφέραμε νωρίτερα σε αυτό το άρθρο, τα μοτίβα σχεδίασης είναι προαιρετικά και πολλοί προγραμματιστές λειτουργούν μια χαρά χωρίς να γνωρίζουν μοτίβα. Μπορεί να χρησιμοποιήσουν κατά λάθος τα μοτίβα, ωστόσο δεν το γνωρίζουν. Γιατί λοιπόν οποιοσδήποτε προγραμματιστής ξοδεύει το χρόνο του/της μαθαίνοντας τα σχέδια σχεδίασης; Πρώτιστος, οι λύσεις μοτίβων σχεδίασης είναι καλά δοκιμασμένες, καθιερωμένες και καλά δοκιμασμένες σε μια ποικιλία κοινών προβλημάτων σχεδιασμού λογισμικού. Η γνώση αυτών των αρχών στην αντικειμενοστραφή ανάπτυξη σχεδίασης θα σας βοηθήσει να δημιουργήσετε ένα σχέδιο που είναι φουτουριστικό και οι μελλοντικές αλλαγές στο σχέδιό σας είναι απλές. (Ανάγνωση αρχή ανοίγματος-κλεισίματος). Έτσι, θα σας βοηθήσει μόνο να σχεδιάσετε.

Δεύτερον, τα σχέδια λογισμικού, τα οποία βασίζονται σε μοτίβα σχεδίασης, υποστηρίζουν την επαναχρησιμοποίηση, είναι πιο στιβαρά και εύκολα συντηρήσιμα. Έτσι, εξοικονομείτε κόστος εδώ. Τρίτονόταν σχεδιάζουμε μοτίβα, ο κώδικάς μας γίνεται εύκολα κατανοητός και εντοπισμός σφαλμάτων, αυτό βοηθά στην ταχύτερη ανάπτυξη και η ενσωμάτωση ενός νέου μέλους της ομάδας γίνεται πολύ εύκολη.

τελευταίος, είναι μια κοινή γλώσσα που καταλαβαίνουν όλοι οι προγραμματιστές. Ας πούμε, μπορείτε εύκολα να πείτε στην ομάδα σας να εφαρμόσει ένα „μοτίβο σχεδίασης εργοστασίων“ για τη δήλωση προβλήματος και θα καταλάβουν.

4. Ταξινόμηση μοτίβων σχεδίασης

Υπάρχουν τρεις μεγάλες κατηγορίες σε Μοτίβα σχεδίασης Java. Θα συζητήσουμε τις κατηγορίες και τα πραγματικά σχέδια σχεδίασης που ανήκουν σε αυτές.

4.1. Δημιουργικά Σχεδιαστικά Μοτίβα

Δημιουργικά μοτίβα χρησιμοποιούνται για τη δημιουργία των αντικειμένων για την τάξη. Τα χρησιμοποιούμε αντί για άμεση εγκατάσταση με κατασκευαστές κλάσεων. Αυτά τα μοτίβα κάνουν τη δημιουργία αντικειμένων πολύ δυναμική και η δημιουργία μπορεί να συμβεί κατά το χρόνο εκτέλεσης με βάση την τιμή εισόδου. Παρέχουν την υψηλότερη ευελιξία στον τρόπο δημιουργίας και προετοιμασίας των αντικειμένων.

Όνομα μοτίβου σχεδίασης Σκοπός
Μοναδικό χαρτί Χρησιμοποιούμε μοτίβο σχεδίασης Singleton όταν μια εφαρμογή θέλει να έχει μια μοναδική παρουσία μιας κλάσης ανά JVM.
Εργοστάσιο Χρησιμοποιήσαμε εργοστασιακό σχέδιο σχεδίασης όταν πρέπει να δημιουργήσουμε αντικείμενα που απαιτούν πολύπλοκα βήματα. Συγκεντρώνει τη δημιουργία αντικειμένων.
Αφηρημένο εργοστάσιο Το αφηρημένο εργοστασιακό σχέδιο χρησιμοποιείται όταν χρειαζόμαστε ένα άλλο στρώμα αφαίρεσης στην κορυφή στο εργοστασιακό σχέδιο, το ονομάσαμε επίσης ως εργοστασιακό μοτίβο.
Οικοδόμος Το μοτίβο σχεδίασης του οικοδόμου είναι σαν το εργοστασιακό σχέδιο για τη δημιουργία σύνθετων αντικειμένων. Το χρησιμοποιήσαμε όταν θέλουμε να δημιουργήσουμε διαφορετικούς τύπους αμετάβλητων αντικειμένων χρησιμοποιώντας την ίδια διαδικασία κατασκευής αντικειμένων.
Πρωτότυπο Το μοτίβο σχεδίασης πρωτοτύπων χρησιμοποιείται όταν μια εφαρμογή χρειάζεται να δημιουργήσει έναν τεράστιο αριθμό αντικειμένων που έχουν την ίδια κατάσταση ή διαφέρουν πολύ λίγο.
Δημιουργικά Σχεδιαστικά Μοτίβα

4.2. Μοτίβα δομικής σχεδίασης

Τα δομικά μοτίβα σχεδιασμού βοηθούν το σχεδιασμό του λογισμικού να παρέχει λύσεις για το πώς να ομαδοποιήσει τα διάφορα κομμάτια μιας εφαρμογής μεταξύ τους. Παρέχει ευελιξία και επεκτασιμότητα. Το κύριο πλεονέκτημα της χρήσης αυτών των μοτίβων είναι ότι ο προγραμματιστής μπορεί να αλλάξει τη δομή ενός μεμονωμένου κομματιού χωρίς να επηρεάσει τη δομή ολόκληρης της εφαρμογής.

Όνομα μοτίβου σχεδίασης Σκοπός
Προσαρμογέας Το μοτίβο σχεδίασης προσαρμογέα χρησιμοποιείται για τη μετατροπή της διεπαφής μιας κλάσης σε μια άλλη διεπαφή που περιμένουν οι πελάτες. Δεν θα ήταν δυνατό λόγω μη συμβατών διεπαφών.
Σύνθετος Το σύνθετο μοτίβο σχεδίασης χρησιμοποιείται για τη σύνθεση των αντικειμένων που αντιπροσωπεύουν μια ιεραρχία μέρους-ολόκληρης.
Πληρεξούσιο Το μοτίβο σχεδίασης διακομιστή μεσολάβησης χρησιμοποιείται για να παρέχει ένα σύμβολο κράτησης θέσης για ένα άλλο αντικείμενο για τον έλεγχο της πρόσβασης σε αυτό. Παρέχει ελεγχόμενη πρόσβαση στη λειτουργικότητα.
Flyweight Χρησιμοποιούμε μοτίβο σχεδίασης flyweight όταν χρειάζεται να δημιουργήσουμε πολλά αντικείμενα μιας κλάσης. Για να αποθηκεύσετε το αποτύπωμα μνήμης σε συσκευές χαμηλής μνήμης, αυτό το μοτίβο μπορεί να εφαρμοστεί με κοινή χρήση αντικειμένων.
Πρόσοψη Το μοτίβο σχεδίασης πρόσοψης χρησιμοποιείται για τη δημιουργία μιας ενοποιημένης διεπαφής για τον πελάτη που αλληλεπιδρά με την εφαρμογή με ένα σύνολο διεπαφών.
Γέφυρα Το μοτίβο σχεδιασμού γεφυρών χρησιμοποιείται όταν έχουμε ιεραρχίες διεπαφής τόσο στις διεπαφές όσο και στις υλοποιήσεις. Στη συνέχεια, αυτό το μοτίβο χρησιμοποιείται για την αποσύνδεση των διεπαφών από την υλοποίηση και την απόκρυψη των λεπτομερειών υλοποίησης από τα προγράμματα-πελάτες.
Διακοσμητής Το μοτίβο σχεδίασης διακοσμητή χρησιμοποιείται για την αλλαγή της λειτουργικότητας ενός αντικειμένου κατά το χρόνο εκτέλεσης.
Μοτίβα δομικής σχεδίασης

4.3. Μοτίβα σχεδιασμού συμπεριφοράς

Τα μοτίβα σχεδιασμού συμπεριφοράς βοηθούν την εφαρμογή αφαιρώντας τη δράση που θέλουμε να κάνουμε σε κλάσεις ή αντικείμενα. Παρέχει επίσης τη λύση σε αντικείμενα που μπορούν να αλληλεπιδράσουν μεταξύ τους με πολύ καλύτερο τρόπο παρέχοντας χαλαρή σύζευξη.

Όνομα μοτίβου σχεδίασης Σκοπός
Πρότυπο Μέθοδος Το μοτίβο σχεδίασης της μεθόδου προτύπου χρησιμοποιείται για τον καθορισμό των βημάτων για την εκτέλεση ενός αλγόριθμου και μπορεί να παρέχει μια προεπιλεγμένη υλοποίηση που μπορεί να είναι κοινή για όλες ή μερικές από τις υπο-κλάσεις.
Μεσολαβητής Το μοτίβο σχεδίασης διαμεσολαβητή χρησιμοποιείται για την παροχή ενός κεντρικού μέσου επικοινωνίας μεταξύ διαφορετικών αντικειμένων σε μια εταιρική εφαρμογή. Είναι εξαιρετικά χρήσιμο εάν υπάρχουν πολλά αντικείμενα και αλληλεπιδρούν μεταξύ τους.
Αλυσίδα ευθύνης Το μοτίβο σχεδιασμού αλυσίδας ευθύνης χρησιμοποιείται όταν ένα αίτημα πελάτη μπορεί να περάσει σε μια αλυσίδα αντικειμένων για την επεξεργασία τους. Έτσι, παρέχοντας χαλαρή σύζευξη.
Παρατηρητής Χρησιμοποιούμε μοτίβο σχεδίασης παρατηρητή όταν ένα αντικείμενο ενδιαφέρεται για την κατάσταση ενός άλλου αντικειμένου και θέλει να ειδοποιείται όποτε αλλάζει η κατάσταση του άλλου αντικειμένου. Το αντικείμενο που παρατηρεί την κατάσταση ενός άλλου αντικειμένου ονομάζεται Παρατηρητής και το αντικείμενο που παρακολουθείται Υποκείμενο.
Στρατηγική Το μοτίβο σχεδιασμού στρατηγικής χρησιμοποιείται μια εφαρμογή έχει πολλούς αλγόριθμους για ένα συγκεκριμένο πρόβλημα και η εφαρμογή πελάτη αποφασίζει ότι ο πραγματικός αλγόριθμος θα χρησιμοποιηθεί κατά το χρόνο εκτέλεσης.
Εντολή Το μοτίβο σχεδιασμού εντολών χρησιμοποιείται για την εφαρμογή χαλαρής σύζευξης μεταξύ δύο κλάσεων όπου η μία κλάση (επίκληση) θα καλεί μια μέθοδο στην άλλη κλάση (δέκτη) για να εκτελέσει μια επιχειρηματική λειτουργία σε ένα μοντέλο αίτησης-απόκρισης.
κατάσταση Το μοτίβο σχεδίασης κατάστασης χρησιμοποιείται όταν ένα Αντικείμενο αλλάζει τη συμπεριφορά του με βάση την εσωτερική του κατάσταση και η εφαρμογή λαμβάνει μια απόφαση βάσει αυτής της αλλαγής κατάστασης αυτού του αντικειμένου.
Επισκέπτης Το μοτίβο σχεδίασης επισκέπτη χρησιμοποιείται όταν μια εφαρμογή πρέπει να λειτουργήσει σε μια ομάδα παρόμοιων ειδών Αντικειμένων. Με αυτόν τον τρόπο η εφαρμογή μπορεί να μετακινήσει τη λειτουργική λογική έξω από τα αντικείμενα.
Iterator Το μοτίβο σχεδίασης Iterator χρησιμοποιείται για την παροχή ενός τυπικού τρόπου διέλευσης μέσω μιας ομάδας Αντικειμένων. Χρησιμοποιείται ευρέως σε τάξεις Java Collection.
Ενθύμιο Το μοτίβο σχεδίασης Memento χρησιμοποιείται όταν θέλουμε να αποθηκεύσουμε την κατάσταση ενός αντικειμένου ώστε να μπορούμε να το επαναφέρουμε αργότερα.
Μοτίβα σχεδιασμού συμπεριφοράς

Περίληψη

Τα σχέδια σχεδίασης καθιστούν τη διαδικασία σχεδιασμού λογισμικού πιο οργανωμένη και έτοιμη για το μέλλον. Βοηθούν επίσης τον κώδικα να είναι πιο ισχυρός και πιο επαναχρησιμοποιήσιμος. Εάν μια ομάδα χρησιμοποιήσει σωστά τα σχέδια σχεδίασης, θα εξοικονομήσει πολύ χρόνο και χρήμα, καθώς η όλη ανάπτυξη είναι πολύ εύκολη. Βοηθά επίσης τα νέα άτομα που συμμετέχουν στο έργο να επιταχύνουν γρήγορα.

Schreibe einen Kommentar