zoukankan      html  css  js  c++  java
  • 工厂函数

      当一个函数返回一个对象时,我们称之他为 工厂函数(factory function)

      

    function createJelly() {
      return {
        type: 'jelly',
        colour: 'red'
        scoops: 3
      };
    }
    

      组合工厂函数

      

    function createJelly() {
      return {
        type: 'jelly',
        colour: 'red',
        scoops: 3
      };
    }
    
    function createIceCream(flavour='Vanilla') {
      return {
        type: 'icecream',
        scoops: 3,
        flavour
      }
    }
    
    function createDessert() {
      return {
        type: 'dessert',
        bowl: [
          createJelly(),
          createIceCream()
        ]
      };
    }
    

      我们可以组合工厂函数来构建任意复杂的对象,这不需要我们结合使用 new 或 this

    function Trifle() {
      Dessert.apply(this, arguments);
    }
     
    Trifle.prototype = Dessert.prototype;
     
    // 或者
     
    class Trifle extends Dessert {
      constructor() {
        super();
      }
    }

    // A trifle *is a* dessert 蛋糕*是*甜点
    // A trifle *has* layers of jelly, custard and cream. It also *has a* topping.
    // 蛋糕 *有* 果冻层,奶酪层和奶油层,顶部还 *有* 装饰配料。
     
    function createTrifle() {
      return {
        type: 'trifle',
        layers: [
          createJelly(),
          createCustard(),
          createCream()
        ],
        topping: createAlmonds()
      };
    }

    异步的工厂函数

    并非所有工厂都会立即返回数据。例如,有些必须先获取数据。

    在这些情况下,我们可以返回 Promises 来定义工厂函数。

  • 相关阅读:
    10-多线程笔记-2-锁-3-Lock-4-工具类
    09-多线程笔记-2-锁-3-Lock-3-ReadWriteLock
    08-多线程笔记-2-锁-3-Lock-2-Lock
    07-多线程笔记-2-锁-3-Lock-1-AQS
    空闲时间无聊写的一个软著源代码文档生成器
    Centos7.x创建lvm
    cups API
    debezium 使用踩坑
    hive 行列转换
    mac 上docker 容器动态暴露端口
  • 原文地址:https://www.cnblogs.com/yiyi17/p/9143927.html
Copyright © 2011-2022 走看看