观察者模式-设计模式

对于类中属性或者方法发生变化时,采用观察者模式对其进行监听功能,做出变化。

//观察者模式

//定义一个person类,存放着姓名属性,并限制其原属性的私有。
class Person{
    //私有类内的原始属性
    private _name:string ;

    //定义一个数组属性,采用泛型,强制其参数类型;
    observer: Array<Iobserver> = new Array<Iobserver>();
    
    //赋值,对类内属性值采用寄存器进行输出,并进行赋值并处理
    set name(value){
        //将原本属性值修改为当前的赋予值
        this._name = value;
        //遍历observer数组,对数组内的对象进行输出
        for(let observer of this.observers){
            observer.nameChange(this._name);
        }

    //获取参数值,取得寄存器里的属性值,返回给类内属性
    get name(){
        return this._name;
    }
    }
}

//定义了一个监听协议,用于监察姓名的变化,定义了一个监听方法
interface Iobserver{
    nameChange(newName);
}

//定义了一个test类,用于指定监听的对象,必须输出对接口类的方法重写。
class Test implement Iobserver{
    nameChange(newName){
        document.write("this name is change:" + newName);
}

//实例化对象
let person = new Person();
//用于监听的对象
let test = new test();

//设置为监听对象,为person对象下的数组内加了监听的方法。
person.observer.push(test);

//对person类的name属性进行修改时
person.name = "waiwai" ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值