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 նմուշը հնարավորություն է տալիս իրականացնել բազմակի տեղեկացման մեխանիզմ։