Sobes.tech
Junior — Middle

Observer dizayn naqshini qanday amalga oshirasiz?

sobes.tech AI

AIdan javob

Observer dizayn shabloni, obyektlarning boshqa obyektning (subyektning) voqealar yoki holat o'zgarishlariga obuna bo'lishini tashkil qilish uchun ishlatiladi. iOSda uni bir nechta usullarda amalga oshirish mumkin, masalan, protokollar va delegatlar, NotificationCenter yoki o'ziga xos amalga oshirish orqali.

Oddiy protokol yordamida amalga oshirish misoli:

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)")
    }
}

// Foydalanish:
let subject = Subject()
let observer1 = ConcreteObserver()
subject.attach(observer: observer1)
subject.setState("Yangi holat")

Bu yondashuv obyektlarning bir-biriga qattiq bog'lanmasdan o'zgarishlar haqida bildirish olishini ta'minlaydi.