Junior — Middle
Kuidas te implementiksite Observer disainimustrit?
sobes.tech AI
Vastus AI-lt
The Observer design pattern is used to organize the subscription of observer objects to events or state changes of another object (the subject). In iOS, it can be implemented in several ways, such as through protocols and delegates, NotificationCenter, or a custom implementation.
A simple implementation example using a protocol:
protocol Observer: AnyObject {
func update(data: String)
}
class Subject {
private var observers = [Observer]()
private var state: String = ""
func attach(observer: Observer) {
observers.append(observer)
}
func detach(observer: Observer) {
observers.removeAll { $0 === observer }
}
func setState(_ newState: String) {
state = newState
notify()
}
private func notify() {
for observer in observers {
observer.update(data: state)
}
}
}
class ConcreteObserver: Observer {
func update(data: String) {
print("Observer received update: \(data)")
}
}
// Usage:
let subject = Subject()
let observer1 = ConcreteObserver()
subject.attach(observer: observer1)
subject.setState("New state")
This approach allows objects to subscribe and receive notifications about changes without tight coupling between them.