观察者模式&工厂模式

本文介绍了JavaScript中两种重要的设计模式——观察者模式和工厂模式。通过实例展示了如何使用观察者模式来实现对象间的依赖通知,以及工厂模式如何简化对象创建。观察者模式用于当一个对象的状态改变时,所有依赖于它的对象都会得到通知并被自动更新。工厂模式则提供了一种创建对象的最佳方式,通过抽象出创建过程,使得代码更具扩展性和灵活性。

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

观察者模式

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值