Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε πώς λειτουργεί το μοτίβο Observer και σε ποιες περιπτώσεις χρησιμοποιείται;

sobes.tech AI

Απάντηση από AI

Το πρότυπο Observer (Παρατηρητής) επιτρέπει σε ένα αντικείμενο (τον εκδότη) να ειδοποιεί άλλα αντικείμενα (τους συνδρομητές) για αλλαγές στην κατάσταση του χωρίς αυστηρή σύνδεση μεταξύ τους. Ο εκδότης διατηρεί μια λίστα με τους συνδρομητές και τους ειδοποιεί όταν υπάρχουν αλλαγές.

Αυτό το πρότυπο χρησιμοποιείται συχνά για την υλοποίηση συστημάτων συμβάντων, π.χ., στο iOS — NotificationCenter, KVO (Key-Value Observing) ή delegates.

Παράδειγμα σε Swift:

protocol Observer: AnyObject {
    func update(value: Int)
}

class Subject {
    private var observers = [Observer]()
    private var value: Int = 0 {
        didSet {
            notify()
        }
    }
    
    func addObserver(_ observer: Observer) {
        observers.append(observer)
    }
    
    func setValue(_ newValue: Int) {
        value = newValue
    }
    
    private func notify() {
        observers.forEach { $0.update(value: value) }
    }
}

class ConcreteObserver: Observer {
    func update(value: Int) {
        print("Η τιμή ενημερώθηκε σε \(value)")
    }
}

let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10)  // Εκτύπωση: Η τιμή ενημερώθηκε σε 10

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