观察者模式

观察者模式

有观察者,也有被观察者,观察者需要放到被观察者中,被观察者的状态发生变化需要通知观察者
内部也是基于发布订阅模式 收集观察者 状态变化后要通知观察者

class Subject{
    constructor(name){
        this.name=name
        this.state='开心的'
        this.observers=[]
    }
    attach(o){
        this.observers.push(o);
    }
    setState(newState){
        this.state=newState;
        this.observers.forEach(o=>o.updated(this))
    }
}
class Observer{
    constructor(name){
        this.name=name
    }
    updated(baby) {
        console.log('当前'+this.name+'被通知了','当前小宝宝的状态是'+baby.state)
    }
}
let baby=new Subject('小宝宝')
let parent=new Observer('爸爸')
let mother=new Observer('妈妈')
baby.attach(parent)
baby.attach(mother)
baby.setState('被欺负了')

运行结果
当前爸爸被通知了 当前小宝宝的状态是被欺负了
当前妈妈被通知了 当前小宝宝的状态是被欺负了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值