美文网首页
JS设计模式-工厂模式

JS设计模式-工厂模式

作者: 林海_Mense | 来源:发表于2019-03-03 13:55 被阅读0次

工厂模式介绍

什么时候用工厂模式,使用场景等?
  • 将 new 操作单独封装
  • 遇到 new 时,就要考虑是否该使用工厂模式。
示例
  • 你去购买汉堡,直接点餐,取餐,不用自己亲手做。
  • 商店要 ”封装" 做汉堡的工作,做好直接给买者。
工厂模式UML类图如下
工厂模式UML类图

其中Creator是一个工厂,Product 是一个产品。
一个Creator工厂有一个create方法,返回一个产品,可以理解为最简单的工厂模式。

代码演示

class Product {
    constructor(name) {
        this.name = name;
    }

    init() {
        alert("init");
    }
    
    fn1() {
        alert("fn1");
    }
    fn2() {
        alert("fn2");
    } 
}
class Creator {
    create(name){
        return new Product(name);
    }
}

// 测试
let creator = new Creator();
let p = creator.create("p1");
p.init();
p.fn1();

// 结果 弹出 init  111 

结论: 我们通过Creator类提供的create方法来创建Product, 通过Creator工厂已经把真正的构造函数封装起来了,我们用的时候只需要知道Creator工厂的create方法可以产生一个实例,而不用去关心生成的实例是谁。

常见场景
  • Jquery - $("div")
  • React.createElement
  • Vue 异步组件
  1. Jquery工厂模式简单demo
class Jquery {
    constructor(selector){
        let slice = Array.prototype.slice;
        let dom = slice.call(document.querySelectorAll(selector));
        let len = dom ? dom.length : 0;
        for(let i = 0; i < len; i++) {
            this[i] = dom[i];
        }
        this.length = len;
        this.selector = selector || "";
    }
    append(node){

    }
    addClass(name){

    }
    html(data){

    }
}
window.$ = function (selector) {
    return new Jquery(selector);
}
  1. React.createElement简单demo
class VNode (tag, attrs, children)  { // 此处写法便于理解,语法错误请忽略
   // 省略内部代码
}
React.createElement = function (tag, attrs, children) {
    return new Vnode(tag, attrs, children);
}

相关文章

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • 十道前端面试题第【05】篇

    摘要:本篇是设计模式专题,分享了10个设计模式的JS示例代码——工厂模式、单例模式、原型模式、建造者模式、外观模式...

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • JS设计模式-工厂模式

    简单工厂模式 优点:能解决多个相似的问题 缺点:不能识别对象的类型 工厂模式是为了解决多个类似对象声明问题,也就是...

  • js设计模式-工厂模式

    工厂模式 什么是工厂模式工厂模式是一种 创建模式,用来解决创建对象的问题。根据参数类型,通过调用工厂方法来创建不同...

  • JS设计模式-工厂模式

    工厂模式介绍 什么时候用工厂模式,使用场景等? 将 new 操作单独封装 遇到 new 时,就要考虑是否该使用工厂...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

网友评论

      本文标题:JS设计模式-工厂模式

      本文链接:https://www.haomeiwen.com/subject/geceuqtx.html