// 观察者协议
protocol Observer {
func update(with state: String)
}
// 被观察对象
class Observable {
private var observers: [Observer] = []
private var state: String = ""
func add(observer: Observer) {
observers.append(observer)
}
func remove(observer: Observer) {
observers = observers.filter { $0 !== observer }
}
func setState(_ newState: String) {
state = newState
notifyObservers()
}
private func notifyObservers() {
for observer in observers {
observer.update(with: state)
}
}
}
// 具体观察者1
class ConcreteObserver1: Observer {
func update(with state: String) {
print("ConcreteObserver1 收到通知,状态为: \(state)")
}
}
// 具体观察者2
class ConcreteObserver2: Observer {
func update(with state: String) {
print("ConcreteObserver2 收到通知,状态为: \(state)")
}
}
// 使用示例
let observable = Observable()
let observer1 = ConcreteObserver1()
let observer2 = ConcreteObserver2()
observable.add(observer: observer1)
observable.add(observer: observer2)
observable.setState("新状态")