观察者模式&工厂模式

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

观察者模式

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);
内容概要:本文围绕基于反步法的AUV(自主水下机器人)轨迹跟踪控制展开研究,重点实现了对圆形和直线两种典型轨迹的高精度跟踪控制。通过构建非线性动力学模型,采用反步控制(Backstepping Control)方法设计控制器,利用李雅普诺夫稳定性理论保证系统全局渐近稳定,有效解决了AUV在复杂水下环境中存在的强耦合、非线性强、外部干扰多等控制难题。文中提供了完整的Matlab仿真代码与详细的说明文档,展示了控制器在不同轨迹下的跟踪效果,验证了该方法在抑制抖振、提高响应速度和增强鲁棒性方面的优越性能。; 适合人群:具备自动控制理论、非线性系统分析及Matlab/Simulink仿真基础的研究生、科研人员及从事水下机器人控制算法开发的工程师,尤其适合研究先进控制策略在海洋装备中应用的技术人员。; 使用场景及目标:①掌握反步法在非线性系统控制中的设计流程与稳定性分析方法;②实现AUV在海洋勘探、水下作业、环境监测等任务中的精确轨迹跟踪;③为无人潜航器、水下无人平台的自主导航与运动控制提供算法参考与仿真验证平台。; 阅读建议:建议读者结合Matlab仿真代码逐模块分析控制算法实现细节,重点关注坐标变换、虚拟控制律设计、李雅普诺夫函数构造等关键步骤,并尝试引入外界干扰或参数摄动以测试控制器鲁棒性,进一步深化对非线性控制理论工程应用的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值