Junior — Middle
Μπορεί να υλοποιηθεί ένας μηχανισμός ειδοποίησης πολλαπλών αντικειμένων ταυτόχρονα χρησιμοποιώντας το πρότυπο Observer;
sobes.tech AI
Απάντηση από AI
Ναι, το μοτίβο Observer προορίζεται ειδικά για την ειδοποίηση πολλαπλών αντικειμένων σχετικά με αλλαγές στην κατάσταση του υποκειμένου. Σε αυτό το μοτίβο, υπάρχει ένα αντικείμενο-υποκείμενο που διατηρεί μια λίστα παρατηρητών (αντικειμένων) που έχουν εγγραφεί στα γεγονότα του. Όταν αλλάζει η κατάσταση του υποκειμένου, το ειδοποιεί διαδοχικά όλους τους συνδρομητές.
Παράδειγμα σε Swift:
protocol Observer {
func update()
}
class Subject {
private var observers = [Observer]()
func attach(_ observer: Observer) {
observers.append(observer)
}
func notify() {
observers.forEach { $0.update() }
}
func changeState() {
// αλλαγή κατάστασης
notify() // ειδοποιούμε όλους
}
}
class ConcreteObserver: Observer {
func update() {
print("Λήφθηκε ειδοποίηση")
}
}
let subject = Subject()
let observer1 = ConcreteObserver()
let observer2 = ConcreteObserver()
subject.attach(observer1)
subject.attach(observer2)
subject.changeState() // και οι δύο παρατηρητές θα λάβουν την ειδοποίηση
Έτσι, το μοτίβο Observer επιτρέπει την υλοποίηση ενός μηχανισμού πολλαπλής ειδοποίησης.