TS实现简单的观察者模式

文章介绍了观察者模式,它定义了一对多的依赖关系,当一个对象的状态改变时,所有依赖该对象的其他对象都会得到通知并自动更新。示例中展示了如何创建一个Person类作为被观察者,Test类作为观察者,通过设置和更改姓名触发通知机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

观察者模式: 观察者模式是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
// 观察者模式的实现
interface IObserver {
    changeName(name: string): void; 
}

class Preson {
    private _name: string;
    // 所有的观察者
    observer: Array<IObserver> = new Array<IObserver>();

    set <T extends string>(value: T): void {
        this._name = value;
        // 发生变化
        // 遍历观察者数组,给所有的观察者发消息
        for (let obs of this.observer) {
            obs.changeName(this._name);
        }
    }

    get <T extends string>(value: T): T {
        return value
    }
}

class Test implements IObserver{
    changeName(name: string): void {
        console.log('名字变成了' + name);
    }
}

const P = new Preson()
const T = new Test()

// 设置监听对象,添加一个观察者到观察者列表中。 这会发生变化。
P.observer.push(T);
P.set('Billy');
P.set('Robby');
P.set('Tony');

// 编译结果
// 名字变成了Billy
// 名字变成了Robby
// 名字变成了Tony
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值