Sobes.tech
Junior — Middle

Observer үлгүсү кандай иштейт жана кайсы учурларда колдонулат деп түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

Күзөтчү (Observer) үлгүсү объектке (чыгаруучу) анын абалындагы өзгөрүүлөр жөнүндө башка объекттерге (катталуучуларга) катуу байланышсыз кабарлоого мүмкүндүк берет. Чыгарууучу катталуучулардын тизмесин сактайт жана өзгөрүүлөр болгондо аларга кабар берет.

Бул үлгү көбүнчө окуялык системдерди ишке ашырууда колдонулат, мисалы, iOSто NotificationCenter, KVO (Key-Value Observing) же делегаттар.

Swiftте мисал:

protocol Observer: AnyObject {
    func update(value: Int)
}

class Subject {
    private var observers = [Observer]()
    private var value: Int = 0 {
        didSet {
            notify()
        }
    }
    
    func addObserver(_ observer: Observer) {
        observers.append(observer)
    }
    
    func setValue(_ newValue: Int) {
        value = newValue
    }
    
    private func notify() {
        observers.forEach { $0.update(value: value) }
    }
}

class ConcreteObserver: Observer {
    func update(value: Int) {
        print("Маалымат жаңырды: \(value)")
    }
}

let subject = Subject()
let observer = ConcreteObserver()
subject.addObserver(observer)
subject.setValue(10)  // Натыйжа: Маалымат жаңырды: 10

Бул үлгү маалымат булагын керектөөчүлөрдөн бөлүп, иш-чараларга ийкемдүү жазылууну камсыз кылуу үчүн колдонулат.