JS的工厂模式、原型模式、构造函数模式、构造+原型模式、单例模式、观察者模式、发布者和订阅模式、策略模式

这篇博客详细介绍了JavaScript中的多种设计模式,包括工厂模式、原型模式、构造函数模式、构造+原型模式、单例模式、观察者模式、发布者和订阅模式以及策略模式。工厂模式用于批量创建对象,原型模式节省内存但对象识别存在问题,构造+原型模式结合两者优点,单例模式确保类只有一个实例并提供全局访问,观察者模式实现一对多的依赖关系,发布者和订阅模式则用于事件监听和触发,而策略模式则是一种动态选择算法或行为的方式。
摘要由CSDN通过智能技术生成

1. 工厂模式

优点:使用工厂模式 解决多次创建对象的问题
缺点:没有解决对象识别的问题 (返回的都是同一个对象类型)

    //实例化不同的人
    function Factory(name,age,job){
   
        var obj = new Object();
        obj.name = name;
        obj.age = age;
        obj.job = job;
        obj.sleep = function() {
   
            console.log(this.name + "在睡觉")
        }
        return obj;
    }
    var  p1 = Factory("张三",18,"学生");
    var  p2 = Factory("李四",28,"老师");
    var  p3 = Factory("王五",48,"校长");
    p1.sleep();
    p2.sleep();
    p3.sleep();
    console.log(p1,p2,p3);

2. 原型模式

给构造函数省略属性和方法 (不考虑传递参数) 原型对象上属性所有实例共享

    function Person(){
   
        
    }
    Person.prototype = {
   
        constructor:Person,
        name:'学生',
        age:'18',
        sleep:function(){
   
            console.log("在睡觉");
        }
    }
    var p1 = new Person();
    p1.job = "打工";
    var p2 = new Person();
    p2.work = "开车";
    console.log(p1, p2);

3. 构造函数模式

没有显示创建对象,没有返回语句 ,直接给this指针上赋属性和方法

 function Person(name,age,job){
   
        this.name = name;
        this.age = age;
        this.job = job;
        this.sleep = function (){
   

        }
    }
    var p = new Person("小明",18,"学生")
    console.log(p);//Person {name: "小明", age: 18, job: "学生", sleep: ƒ}

4. 构造+原型模式

    function Person(name,age){
   
        this.name = name;
        this.age = age;
    }

    Person.prototype.sleep =
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值