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