Junior — Middle
Kā jūs īstenotu Observer dizaina modeli?
sobes.tech AI
Atbilde no AI
Novērotāja dizaina paraugs tiek izmantots, lai organizētu novērotāju objektu abonēšanu citam objektam (subjektam) notikumiem vai stāvokļa izmaiņām. iOS to var īstenot vairākos veidos, piemēram, izmantojot protokolus un delegātus, NotificationCenter vai pašaizsardzības risinājumu.
Vienkāršs piemērs ar protokola palīdzību:
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)")
}
}
// Lietošana:
let subject = Subject()
let observer1 = ConcreteObserver()
subject.attach(observer: observer1)
subject.setState("Jauns stāvoklis")
Šī pieeja ļauj objektiem abonēt un saņemt paziņojumus par izmaiņām bez ciešas saistības starp tiem.