JavaScript工厂模式?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

JavaScript工厂模式?

2019-12-30 12:37:27 582 1
取消 提交回答
全部回答(1)
  • 前端问答
    2019-12-30 12:40:00

    工厂模式分为好几种,这里就不一一讲解了,以下是一个简单工厂模式的例子

    class Man {
      constructor(name) {
        this.name = name
      }
      alertName() {
        alert(this.name)
      }
    }
    
    class Factory {
      static create(name) {
        return new Man(name)
      }
    }
    
    Factory.create('yck').alertName()
    
    

    当然工厂模式并不仅仅是用来 new 出实例。

    可以想象一个场景。假设有一份很复杂的代码需要用户去调用,但是用户并不关心这些复杂的代码,只需要你提供给我一个接口去调用,用户只负责传递需要的参数,至于这些参数怎么使用,内部有什么逻辑是不关心的,只需要你最后返回我一个实例。这个构造过程就是工厂。

    工厂起到的作用就是隐藏了创建实例的复杂度,只需要提供一个接口,简单清晰。

    在 Vue 源码中,你也可以看到工厂模式的使用,比如创建异步组件

    export function createComponent (
      Ctor: Class<Component> | Function | Object | void,
      data: ?VNodeData,
      context: Component,
      children: ?Array<VNode>,
      tag?: string
    ): VNode | Array<VNode> | void {
        
        // 逻辑处理...
      
      const vnode = new VNode(
        `vue-component-${Ctor.cid}${name ? `-${name}` : ''}`,
        data, undefined, undefined, undefined, context,
        { Ctor, propsData, listeners, tag, children },
        asyncFactory
      )
    
      return vnode
    }
    
    

    在上述代码中,我们可以看到我们只需要调用 createComponent 传入参数就能创建一个组件实例,但是创建这个实例是很复杂的一个过程,工厂帮助我们隐藏了这个复杂的过程,只需要一句代码调用就能实现功能。

    1 0
相关问答

1

回答

JavaScript 类数组对象的定义?

2020-04-04 10:34:37 546浏览量 回答数 1

1

回答

JavaScript关联数组的长度

2020-02-09 14:05:51 371浏览量 回答数 1

1

回答

如何将JavaScript对象的属性值提取到数组中?

2020-02-09 12:58:43 259浏览量 回答数 1

1

回答

旋转JavaScript中数组中的元素

2020-02-09 11:56:06 248浏览量 回答数 1

1

回答

在JavaScript中获得两个数组的并集

2020-02-09 11:40:10 214浏览量 回答数 1

1

回答

对象是否以javascript的深层或浅层副本推送到数组中?

2020-02-08 22:00:58 259浏览量 回答数 1

2

回答

有没有办法使用JavaScript以相反的顺序在数组上使用map()?

2020-02-08 21:51:58 441浏览量 回答数 2

2

回答

在Javascript中,将NodeList转换为数组的最佳方法是什么

2020-02-08 20:37:57 471浏览量 回答数 2

1

回答

Javascript按两个字段对数组进行排序

2020-02-08 20:32:20 252浏览量 回答数 1

2

回答

javascript中如何将字符数组转为整型数组

2016-03-19 11:05:34 2534浏览量 回答数 2
+关注
前端问答
前端问答小助手
1
文章
480
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载