对于类中属性或者方法发生变化时,采用观察者模式对其进行监听功能,做出变化。
//观察者模式
//定义一个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" ;