• JavaScript设计模式—工厂模式


    工厂模式介绍

    将new操作符单独进行封装,遇到new时,就要考虑是否该使用工厂模式

    举一个生活当中的示例:

    你要去购买汉堡,直接点餐,取餐,不会自己动手做,商店要“封装” 做汉堡的工作,做好直接给购买者,而不是商店给你面粉,工具让你自己去做

    UML类图和代码示例

    class Product {
      constructor (name){
        this.name = name
      }
      init () {
        console.log(`init:${this.name}`)
      }
      fn () {
        console.log(`fn:${this.name}`)
      }
    }
    
    class Creator {
      create (name) {
        return new Product(name)
      }
    }
    
    // 测试
    let creator = new Creator()
    let p1 = creator.create('p1')
    p1.init()
    p1.fn()

    设计原则验证

    构造函数和创建者分离,符合开放封闭原则

    场景示例

    jQuery - $('div')

    Jquery就是工厂模式,向外面暴露一个方法,方法返回一个JQuery对象

    class jQuery {
      constructor(seletor) {
        let slice = Array.prototype.slice
        let dom = slice.call(document.querySelectorAll(seletor))
        let len = dom ? dom.length : 0
        for(let i = 0; i < len; i++){
          this[i] = dom[i]
        }
        this.length = len
        this.seletor = seletor || ''
      }
      append(node){
    
      }
      addClass(name){
    
      }
      html(data){
    
      }
    }
    window.$ = function (selector) {
      // 工厂模式
      return new jQuery(selector)
    }
    
    
    // 测试代码
    var $p = $('p')
    console.log($p)
    console.log($p.addClass)

    React.createElement(创建虚拟DOM对象的方法)

    // 创建虚拟DOM对象
    const vDom1 = React.createElement('h1', {id: myId.toLowerCase()}, msg.toUpperCase())
    
    //渲染虚拟DOM
    ReactDOM.render(vDom1, document.getElementById('test1'))

    vue异步组件

  • 相关阅读:
    Mybatis详解(二)
    Mybatis详解(一)
    Java集合
    Java基础之IO
    Java异常知识点!
    HTTP状态码
    ajax传字符串时出现乱码问题的解决
    Json 文件 : 出现 Expected value at 1:0 问题的解决
    java @XmlTransient与@Transient区别
    文件的上传和回显
  • 原文地址:https://www.cnblogs.com/LO-ME/p/4913718.html
Copyright © 2020-2023  润新知