Junior — Middle
როგორ განახორციელებდი Observer დიზაინის ნიმუშს?
sobes.tech AI
პასუხი AI-სგან
Observer დიზაინის ნიმუში გამოიყენება ობიექტების მონიტორების გამოწერის ორგანიზებისთვის სხვა ობიექტის (სუბიექტის) მოვლენებზე ან მდგომარეობის ცვლილებებზე. iOS-ზე მას შეიძლება განხორციელდეს რამდენიმე გზით, მაგალითად, პროტოკოლებისა და დელეგატების, NotificationCenter-ის ან საკუთარი რეალიზაციის საშუალებით.
სადაც არის მარტივი რეალიზაციის მაგალითი პროტოკოლის საშუალებით:
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)")
}
}
// გამოყენება:
let subject = Subject()
let observer1 = ConcreteObserver()
subject.attach(observer: observer1)
subject.setState("ახალი მდგომარეობა")
ეს მიდგომა საშუალებას აძლევს ობიექტებს ჩაეწერონ და მიიღონ შეტყობინებები ცვლილებების შესახებ, მათ შორის, მკაცრი კავშირის გარეშე.