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
Օգտագործվում է, երբ անհրաժեշտ է տվյալների աղբյուրը բաժանել սպառողներից և ապահովել ճկուն գրանցում իրադարձությունների համար։