前端设计模式

1、工厂模式

1.png

Creator就像一个工厂一样 , 生成一个个Product实例

/*
*  将new操作单独封装
*  遇到new时、就要考虑是否使用工厂模式
*/

class Product {
  constructor (name) {
      this.name = name
  }
 fn1 () {
 }
}
class Creator {
  create (name) {
      return new Product(name)
  }
}
const creater = new Creator()
const  p = creater.create('terry')
console.log(p)

应用场景:

1、 JQuery --- $('div')

class JQuery {
 constructor(selector) {
   const ele = Array.prototype.slice.call(document.querySelectorAll(selector))
   const len = ele.length
   for (let i = 0; i < len; i++) {
     this[i] = ele[i]
   }
   this.selector = selector
   this.length = len
 }
 html() {

 }
 css(data) {

 }
 // ...
}
window.$ = function (selector) {
 return new JQuery(selector)
}

2、React.createElement()

// React.createElement("div", null)
class Vnode {
  ...
}

React.createElement = function(tag, attrs, children) {
  return new Vnode(tag, attrs, children)
}

3、 Vue异步组件

单例模式

系统中被唯一使用的; 一个类只有一个实例;

// 模拟
class SingleObject {
    login() {
       console.log('login')
    }
}
// 静态方法
SingleObject.getInstance = (function() {
  let instance
  return function() {
    if (!instance) {
      instance = new SingleObject()
    }
    return instance
  }
})() 
/**
 * 什么叫单例模式, 每次获取的都是同一个东西
 */
let obj1 = SingleObject.getInstance()
obj1.login()
let obj2 = SingleObject.getInstance()
obj2.login()
console.log('obj1 === obj2', obj1 === obj2) // obj1 === obj2 true  【什么叫单例模式, 每次获取的都是同一个东西】

装饰器模式

观察者模式/发布订阅模式

代理模式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在上一讲中,我们介绍了设计模式的一些基本概念。本讲我们来结合实例,结合前端开发,继续讲解这个话题。 回顾一下设计模...
    ikonan阅读 2,669评论 0 1
  • 介绍 将new操作单独封装 遇到new时。考虑是否使用工厂模式 举例 去购买汉堡,直接点餐、取餐,不会自己做 商店...
    w候人兮猗阅读 1,417评论 0 1
  • 工厂模式介绍 什么时候用工厂模式,使用场景等? 将 new 操作单独封装 遇到 new 时,就要考虑是否该使用工厂...
    林海_Mense阅读 1,625评论 0 0
  • 设计模式的目的 设计模式是为了更好的代码重用性, 可读性,可靠性, 可维护性 学会理解了设计模式, 就会发现生活中...
    陈二狗想吃肉阅读 2,383评论 0 3
  • 写在前面 在前面大篇幅的讲解下,我们讲解了,设计原则,从设计到模式这个过度,为讲设计模式做了大量的铺垫。那么我们今...
    喜剧之王爱创作阅读 4,613评论 0 0