HarmonyOS学习 - 观察者模式
·
// 观察者接口
interface Observer {
update(message: string): void
}
// 主题接口
interface Subject {
attach(observer: Observer): void
detach(observer: Observer): void
notify(message: string): void
}
// 具体主题类
class ConcreteSubject implements Subject {
private observers: Observer[] = []
attach(observer: Observer): void {
this.observers.push(observer)
}
detach(observer: Observer): void {
const index = this.observers.indexOf(observer)
if (index!== -1) {
this.observers.splice(index, 1)
}
}
notify(message: string): void {
this.observers.forEach(observer => observer.update(message))
}
}
// 具体观察者类
class ConcreteObserver implements Observer {
update(message: string): void {
console.log(`Received message: ${message}`)
}
}
export { ConcreteSubject, ConcreteObserver }
- 原理:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己的状态。
- 代码流程:
Observer接口定义了观察者的更新方法update()。Subject接口定义了主题的三个方法:attach()用于注册观察者,detach()用于移除观察者,notify()用于通知所有观察者。ConcreteSubject是具体的主题类,它维护了一个观察者列表observers,并实现了Subject接口的三个方法。ConcreteObserver是具体的观察者类,实现了Observer接口的update()方法,当收到通知时,会打印出收到的消息。
更多推荐



所有评论(0)