观察者模式
class Person{
private _name: String;
//所有的观察值模式
observers: Array<IObserver> = new Array<IObserver>();
set name(value) {
this._name = value;
//发生变化
//遍历观察值数组,给所有观察者发消息
for (let observer of this.observers) {
observer.nameChanged(this._name);
}
}
get name() {
return this._name;
}
}
interface IObserver{
nameChanged(newName);
}
class Test implements IObserver{
nameChanged(newName) {
document.write("监听到变化,名字变为" + newName);
}
}
let person = new Person();
let test = new Test();
person.observers.push(test);
person.name = "哈哈哈";
工厂模式
方便创建对象
enum CarType{
Bmw,
Audi,
Benz
}
class Car{
name: string;
//工厂方法
static Create(carType: CarType): Car{
let car: Car;
switch (carType) {
case CarType.Bmw:
car = new BMW();
break;
case CarType.Audi:
car = new AUDI();
break;
case CarType.Benz:
car = new BENZ();
break;
}
return car;
}
}
class BMW extends Car{ }
class AUDI extends Car{ }
class BENZ extends Car{ }
let bmw = Car.Create(CarType.Bmw);