工厂函数

  当一个函数返回一个对象时,我们称之他为 工厂函数(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 来定义工厂函数。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Go 语言中,工厂函数是一种常见的设计模式,用于创建和初始化对象。工厂函数通常是一个函数,它返回一个新的对象实例,并对其进行初始化。 工厂函数通常具有以下特点: 1. 工厂函数返回一个新的对象实例,而不是指针或引用; 2. 工厂函数可以接受一些参数,用于初始化对象; 3. 工厂函数可以根据需要返回不同类型的对象实例。 在 Go 语言中,创建一个工厂函数非常简单。以下是一个示例: ```go type MyObject struct { // 对象属性 } func NewMyObject() *MyObject { obj := &MyObject{ // 初始化对象属性 } return obj } ``` 在这个示例中,我们定义了一个名为 `MyObject` 的结构体,并创建了一个名为 `NewMyObject` 的工厂函数。这个函数返回一个新的 `MyObject` 对象实例,并对其进行初始化。 您可以根据需要修改 `NewMyObject` 函数,以便根据参数动态地创建和初始化对象。例如,您可以将 `NewMyObject` 函数修改为以下形式: ```go func NewMyObject(param1 string, param2 int) *MyObject { obj := &MyObject{ // 根据参数初始化对象属性 } return obj } ``` 在这个示例中,我们将 `NewMyObject` 函数修改为接受两个参数,用于初始化对象。这样,您可以根据需要动态地创建和初始化 `MyObject` 对象。 总之,工厂函数是一种常见的设计模式,在 Go 语言中非常容易实现。通过使用工厂函数,您可以方便地创建和初始化对象,并根据需要动态地调整对象的行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值