Εφαρμογή του μοτίβου σχεδίασης του παρατηρητή στο TypeScript

Εφαρμογή του μοτίβου σχεδίασης του παρατηρητή στο TypeScript

Ένα σχέδιο σχεδίασης είναι ένα πρότυπο που λύνει ένα συχνά επαναλαμβανόμενο πρόβλημα στο σχεδιασμό λογισμικού.





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





ΚΑΤΑΣΚΕΥΗ ΒΙΝΤΕΟ ΤΗΣ ΗΜΕΡΑΣ

Εδώ θα μάθετε πώς να εφαρμόσετε το μοτίβο σχεδίασης παρατηρητή στο TypeScript.





Το μοτίβο του παρατηρητή

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

ψηφιακός ήχος spdif χωρίς ήχο windows 10

Για το πλαίσιο, ας υποθέσουμε ότι δημιουργείτε έναν ανιχνευτή αποθέματος που παρακολουθεί τον αριθμό των προϊόντων στο κατάστημά σας. Σε αυτήν την περίπτωση, το κατάστημά σας είναι το υποκείμενο/εκδότης και το απόθεμά σας είναι ο παρατηρητής/συνδρομητής. Η χρήση του σχεδίου του παρατηρητή θα ήταν βέλτιστη σε αυτήν την περίπτωση.



Στο μοτίβο σχεδίασης παρατηρητή, η θεματική σας τάξη πρέπει να εφαρμόσει τρεις μεθόδους:

  • Ενα συνδέω μέθοδος. Αυτή η μέθοδος προσθέτει έναν παρατηρητή στο θέμα.
  • ΕΝΑ αποσπώ μέθοδος. Αυτή η μέθοδος αφαιρεί έναν παρατηρητή από ένα θέμα.
  • ΕΝΑ ειδοποίηση/ενημέρωση μέθοδος. Αυτή η μέθοδος ειδοποιεί τους παρατηρητές του υποκειμένου όταν αλλάζει η κατάσταση στο θέμα.

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





Υλοποίηση των τάξεων Subject και Observer

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

μεταφορά αρχείων από τον υπολογιστή στο android wifi απευθείας
// Subject/Publisher Interface 
interface Subject {
attachObserver(observer: Observer): void;
detachObserver(observer: Observer): void;
notifyObserver(): void;
}

// Observer/Subscriber Interface
interface Observer {
update(subject: Subject): void;
}

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





Μια συγκεκριμένη κατηγορία θεμάτων

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

// Subject 
class Store implements Subject {}

Στη συνέχεια, αρχικοποιήστε το Θέμα κατάσταση του Κατάστημα τάξη. Οι παρατηρητές του υποκειμένου θα αντιδράσουν σε αλλαγές σε αυτήν την κατάσταση.

Σε αυτή την περίπτωση, το κράτος είναι ένας αριθμός και οι παρατηρητές θα αντιδράσουν σε μια αύξηση του αριθμού:

πώς να αποκρύψετε τη γραμμή εργασιών στη δεύτερη οθόνη
// Subject state 
private numberOfProducts: number;

Στη συνέχεια, αρχικοποιήστε μια σειρά από παρατηρητές. Αυτός ο πίνακας είναι ο τρόπος με τον οποίο θα παρακολουθείτε τους παρατηρητές:

// initializing observers 
private observers: Observer[] = [];