多属性见识, 设计模式, 单例模式,组合模式

多属性见识:

let obj = {
            name:"张三",
            age:18
        }

        /* 
            参数一 对象
            参数二 对象的属性
        */
        Object.defineProperties(obj,{
            name:{
                writable:true
            },
            age:{

            }
        })

        obj.name = "王富贵"

        console.log(obj);

 设计模式 :

               就是针对某一类的问题而给的专门解决方案和优化方案
        /* 
            常见的设计有
                单例模式 => vuex
                组合模式
                发布 订阅 => 观察者模式
        */


 单例模式:

           单个实例 => 单个对象 => 自始至终只能存在一个对象
        // function Wife(){}
        // let w1 = new Wife();
        // let w2 = new Wife();
        // console.log(w1 === w2);

        //单例 => 只能创建一个对象
        class Wife{}

        //实例
        let instance = undefined;
        function getInstance(){
            if(!instance){
                instance = new Wife();
            }
            return instance;
        }

        let w1 = getInstance();
        let w2 = getInstance();
        console.log(w1,w2,w1 === w2);


  class Wife{}

        let Utils = (function(){
            //定一个实例
            let instance = undefined;
            return function(){
                if(!instance){
                    instance = new Wife();
                }
                return instance
            }
        })()

        let u1 = Utils()
        let u2 = Utils()
        console.log(u1,u2,u1 === u2);

 组合模式:

            将多个拥有共同功能的实例对象组合在一个队列当中,一起执行
        class A{
            init(){
                console.log("我是一个A");
            }
        }
        class B{
            init(){
                console.log("我是一个B");
            }
        }
        class C{
            init(){
                console.log("我是一个C");
            }
        }

        class Comb{
            constructor(){
                //存储的是多个实例对象的一个数组
                this.message = []
            }
            //将实例添加到this.message这个数组当中
            add(obj){
                this.message.push(obj);
            }
            //将this.message里面的实例对象一起调用
            execute(){
                this.message.forEach(item=>{
                    item.init();
                })
            }
        }

        //添加方法
        let c = new Comb();
        c.add(new A())
        c.add(new B())
        c.add(new C())

        c.execute();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值