Σπίτι Προσωπικά Οικονομικά Κατανόηση μοτίβα παρατηρητών - ανδρείκελα

Κατανόηση μοτίβα παρατηρητών - ανδρείκελα

Πίνακας περιεχομένων:

Βίντεο: J Krishnamurti - The Real Revolution - 2. Observing ourselves 2024

Βίντεο: J Krishnamurti - The Real Revolution - 2. Observing ourselves 2024
Anonim

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

Δημιουργία διεπαφής θέμα

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

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

Σε αυτό το παράδειγμα, πρέπει επίσης να ρυθμίσετε μια διεπαφή για το θέμα, κάτι που παρακολουθούν οι παρατηρητές. η διεπαφή Θέματος αναφέρει τις μεθόδους που πρέπει να εφαρμόσουν τα θέματα. Βάλτε εδώ μια μέθοδο RegisterSbserver έτσι ώστε το θέμα να μπορεί να παρακολουθεί τους παρατηρητές που θέλουν να εγγραφούν. Εκτός από την εγγραφή παρατηρητών, θα πρέπει να έχετε κάποιο τρόπο να απαλλαγείτε από αυτά, ώστε να προσθέσετε μια μέθοδο removalObserver. Και υπάρχει μια μέθοδος notifyObservers που θα ειδοποιήσει τους παρατηρητές για κάποια αλλαγή.

δημόσια διεπαφή Θέμα

{

δημόσιο κενό registerObserver (Observer o);

δημόσιο κενό removeObserver (Observer o);

public void notifyObservers ();

}

Αυτή η διεπαφή απαριθμεί τις μεθόδους που θα πρέπει να εφαρμόσουν τα θέματα όπως το σύστημα βάσης δεδομένων. Έπειτα επάνω: η διεπαφή για τους παρατηρητές.

Δημιουργία διεπαφής παρατηρητή

Η κατασκευή της διεπαφής Observer, την οποία εφαρμόζουν οι παρατηρητές για να τους επιτρέψει να λαμβάνουν ειδοποιήσεις, είναι απλή. Το μόνο που χρειάζεστε είναι μια μέθοδος που θα καλείται όταν είναι έτοιμη μια νέα ειδοποίηση (μπορείτε να καλέσετε αυτήν την ενημέρωση μεθόδου). Σε αυτό το παράδειγμα, περάσατε τη λειτουργία της βάσης δεδομένων που εκτελέστηκε (όπως "επεξεργασία", "διαγραφή", "δημιουργία" κ.ο.κ.) και την εγγραφή που άλλαξε ως συμβολοσειρές στη μέθοδο ενημέρωσης.

δημόσιο περιβάλλον παρατηρητή

{

δημόσια άκυρη ενημέρωση (λειτουργία στοιχειοσειράς, εγγραφή κορδονιών);

}

Όταν οι παρατηρητές εφαρμόζουν τη μέθοδο ενημέρωσης, το θέμα είναι σε θέση να τους περάσει το αρχείο που επηρεάστηκε και τη λειτουργία που εκτελέστηκε.

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

Δημιουργία ενός θέματος

Το θέμα πρέπει να επιτρέψει στους παρατηρητές να εγγραφούν και να τις ειδοποιήσουν όταν συμβεί κάποιο γεγονός. Σύμφωνα με τη διεπαφή θέμα, οι τρεις μέθοδοι που ένα θέμα πρέπει να εφαρμόσει σε αυτά τα παραδείγματα είναι: registerObserver, removeObserver και notifyObservers. Αυτό ακριβώς κάνει η κλάση Βάσεων Δεδομένων σε αυτό το παράδειγμα.

Για να παρακολουθείτε τους παρατηρητές, χρησιμοποιήστε ένα διάνυσμα Java που ονομάζεται παρατηρητής και δημιουργήθηκε στον κατασκευαστή βάσης δεδομένων. (Ο προσδιοριστής τύπου εδώ, είναι για το Java 1. 5 ή νεότερη έκδοση και υποδεικνύει ότι κάθε αντικείμενο παρατηρητή υλοποιεί τη διεπαφή Observer · αν χρησιμοποιείτε προηγούμενη έκδοση Java, παραλείψτε τον προσδιοριστή τύπου.)

Εισαγωγή java. χρήσιμο. *;

Δημόσια τάξη υλοποιεί Βάση δεδομένων

{

ιδιωτικοί παρατηρητές Vector.

Δημόσια Βάση Δεδομένων ()

{

παρατηρητές = new Vector ();

}

.

.

.

}

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

εισαγωγή java. χρήσιμο. *;

Δημόσια τάξη υλοποιεί Βάση δεδομένων

{

ιδιωτικοί παρατηρητές Vector.

Δημόσια Βάση Δεδομένων ()

{

παρατηρητές = new Vector ();

}

public void registerObserver (παρατηρητής o)

{

παρατηρητές. προσθέστε (o);

}

.

.

.

}

Πώς να αφαιρέσετε έναν παρατηρητή από τον φορέα παρατηρητών; Κανένα πρόβλημα. Όταν θέλετε να καταργήσετε ένα αντικείμενο από ένα διάνυσμα, μπορείτε να χρησιμοποιήσετε τη μέθοδο αφαίρεσης του διανύσματος. εδώ είναι πώς λειτουργεί στη μέθοδο removalObserver της κλάσης βάσης δεδομένων:

εισαγωγή java. χρήσιμο. *;

Δημόσια τάξη υλοποιεί Βάση δεδομένων

{

ιδιωτικοί παρατηρητές Vector.

Δημόσια Βάση Δεδομένων ()

{

παρατηρητές = new Vector ();

}

public void registerObserver (παρατηρητής o)

{

παρατηρητές. προσθέστε (o);

}

public void removeObserver (παρατηρητής o)

{

παρατηρητές. αφαίρεση (o);

}

.

.

.

}

Όταν ο χρήστης πράγματι κάνει κάτι με τη βάση δεδομένων - διαγράφει μια εγγραφή, για παράδειγμα - ονομάζει τη μέθοδο editRecord της κλάσης βάσης δεδομένων. Για παράδειγμα, για να διαγράψετε την εγγραφή 1, μπορείτε να καλέσετε αυτή τη μέθοδο όπως αυτή: βάση δεδομένων

. editRecord ("διαγραφή", "εγγραφή 1");

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

εισαγωγή java. χρήσιμο. *;

Δημόσια τάξη υλοποιεί Βάση δεδομένων

{

ιδιωτικοί παρατηρητές Vector.

ιδιωτική λειτουργία String;

ιδιωτικό αρχείο String;

Δημόσια Βάση Δεδομένων ()

{

παρατηρητές = new Vector ();

}

.

.

.

δημόσιο κενό editRecord (λειτουργία String, εγγραφή String)

{

αυτό.λειτουργία = λειτουργία;

αυτό. εγγραφή = εγγραφή;

notifyObservers ();

}

}

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

εισαγωγή java. χρήσιμο. *;

Δημόσια τάξη υλοποιεί Βάση δεδομένων

{

ιδιωτικοί παρατηρητές Vector.

ιδιωτική λειτουργία String;

ιδιωτικό αρχείο String;

.

.

.

public void notifyObservers ()

{ για (int loopIndex = 0; loopIndex <παρατηρητές. get (loopIndex);

παρατηρητής. ενημέρωση (λειτουργία, εγγραφή);

}

}

δημόσιο void editRecord (λειτουργία String, εγγραφή String)

{

αυτό. λειτουργία = λειτουργία;

αυτό. εγγραφή = εγγραφή;

notifyObservers ();

}

}

Αυτό είναι όλο που χρειάζεστε για βάση δεδομένων. java, το θέμα σε αυτό το παράδειγμα. Το θέμα θα επιτρέψει στους παρατηρητές να εγγραφούν οι ίδιοι, να διαγραφούν και να ενημερωθούν όταν έχει γίνει επεξεργασία μιας εγγραφής βάσης δεδομένων (που κάνετε με τη μέθοδο editRecord της κλάσης βάσης δεδομένων). Το μόνο που έχει να κάνει για να πάρει αυτή την παράσταση στο δρόμο είναι να δημιουργήσει τους ίδιους τους παρατηρητές.

Κατανόηση μοτίβα παρατηρητών - ανδρείκελα

Η επιλογή των συντακτών

Που συμμετέχουν στις Συνιστώμενες Ομάδες στο LinkedIn - ανδρείκελα

Που συμμετέχουν στις Συνιστώμενες Ομάδες στο LinkedIn - ανδρείκελα

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

Πώς να γράψετε την περίληψη για το προφίλ σας LinkedIn - ανδρείκελα

Πώς να γράψετε την περίληψη για το προφίλ σας LinkedIn - ανδρείκελα

Το προφίλ LinkedIn εμφανίζεται στο τρίτο τρίτο του προφίλ σας, θα πρέπει να δώσει στον αναγνώστη μια γρήγορη ιδέα για το ποιος είστε, τι έχετε επιτύχει και, το σημαντικότερο, τι ψάχνετε στο LinkedIn. Μερικοί άνθρωποι σκέφτονται την περίληψή τους ως "γήπεδο ανελκυστήρα", ή την εισαγωγή τους 30 δευτερολέπτων οι ίδιοι ότι ...

LinkedInIn Group Κατηγορίες - ανδρείκελα

LinkedInIn Group Κατηγορίες - ανδρείκελα

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

Η επιλογή των συντακτών

Πώς να εφαρμόσετε τις εντολές στις μηχανές Minecraft Redstone - dummies

Πώς να εφαρμόσετε τις εντολές στις μηχανές Minecraft Redstone - dummies

Αντικατάσταση κυκλωμάτων. Στο Minecraft, τα μπλοκ εντολών ενεργοποιούνται κάθε φορά που τροφοδοτούνται από το ρεύμα redstone - έτσι, όταν συνδέονται σε ένα κύκλωμα redstone, μπορούν να λειτουργήσουν με ενδιαφέροντα τρόπους. Υπάρχουν διάφοροι τρόποι ενσωμάτωσης των μπλοκ εντολών και των κυκλωμάτων. Δημιουργία αδύνατων μηχανών με κυκλώματα εντολών Μερικές φορές, κυκλώματα redstone ...

Πώς να οικοδομήσουμε κύκλους και σφαίρες στο Minecraft - dummies

Πώς να οικοδομήσουμε κύκλους και σφαίρες στο Minecraft - dummies

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

Πώς να οικοδομήσουμε ένα καταφύγιο και μια πόρτα στο Minecraft - dummy

Πώς να οικοδομήσουμε ένα καταφύγιο και μια πόρτα στο Minecraft - dummy

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

Η επιλογή των συντακτών

Δικτύου Παρέχονται υπηρεσίες Cloud computing - dummies

Δικτύου Παρέχονται υπηρεσίες Cloud computing - dummies

, πλατφόρμες και υπηρεσίες (υποδομή). Οι παρακάτω παράγραφοι περιγράφουν λεπτομερέστερα αυτούς τους τρεις τύπους υπηρεσιών Cloud. Εφαρμογές στο σύννεφο Συχνά αναφέρεται ως λογισμικό ως υπηρεσία (SaaS), πλήρως λειτουργικές εφαρμογές μπορούν να παραδοθούν μέσω του cloud. Ένα από τα ...

IOS Cloud Development Για Ανδρείκελα Cheat Sheet - dummies

IOS Cloud Development Για Ανδρείκελα Cheat Sheet - dummies

Όταν μιλάτε για προγραμματισμό Cloud iOS, μιλάμε για δύο πράγματα: το iCloud (το οποίο υλοποιείται για εσάς από την Apple και σας επιτρέπει να συγχρονίζετε δεδομένα μεταξύ των συσκευών) και τις υπηρεσίες ιστού (οι οποίες σας επιτρέπουν να κάνετε κάποια επεξεργασία της εφαρμογής σας από έναν απομακρυσμένο υπολογιστή κάπου στη μέση του που γνωρίζει πού). ...

Κατανόηση Συνεργασία ως υπηρεσία στο Cloud Computing - dummies

Κατανόηση Συνεργασία ως υπηρεσία στο Cloud Computing - dummies

Στο μέλλον, οι εταιρείες είναι πιθανό να προσφέρουν ενοποιημένη επικοινωνιών (ενσωμάτωση τηλεφωνίας, άμεσων μηνυμάτων και ηλεκτρονικού ταχυδρομείου) ως υπηρεσία για Cloud computing. Η συνεργασία είναι μία από τις φυσικές αγορές για το cloud computing και το λογισμικό ως υπηρεσία (SaaS). Υπάρχει αρκετό εύρος ζώνης και όλες οι εταιρείες συνδέονται με το Διαδίκτυο. Τι εταιρείες επικεντρώνουν ...