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 үлгүсү көп кабарлоо механизмин ишке ашырууга мүмкүндүк берет.