观察者模式&工厂模式

观察者模式

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);

猜你喜欢

转载自blog.csdn.net/qq_32670947/article/details/127428112