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 ნიმუში საშუალებას აძლევს მრავალჯერადი შეტყობინების მექანიზმის განხორციელებას.