组合工厂函数创建对象
工厂函数:返回一个对象的函数。工厂模式是用来创建对象的一种最常用的设计模式,我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。
组合的工厂函数:在一个工厂函数中定义另外一个工厂函数。
工厂函数允许我们从计算中分离我们的数据:定义一个新的函数,它接受一个对象作为参数并返回一个修改的版本。
This means we’ll always be able to serialize our objects as JSON, which is important for persisting them between sessions, sending them over HTTP or WebSockets, and putting them into data stores.
createJelly() {
return {
__typename: 'jelly',
colour: 'red',
scoops: 3,
};
}
creatTop() {
return {
__typename: 'topping',
colour: 'blue',
};
}
createDessert() {
return {
__typename: 'dessert',
bowl: [this.createJelly()],
topping: this.creatTop(),
};
}
ngOnInit() {
console.log(this.createDessert());
}
打印如下:
eatJelly(jelly: any) {
if (jelly.scoops > 0) {
jelly.scoops -= 1;
}
return jelly;
}
ngOnInit() {
console.log(this.eatJelly(this.createJelly()));
console.log(this.createJelly());
}
打印如下:
不是在 jelly(果冻) 对象上定义 eat
方法,我们可以定义一个新的函数,它接受一个对象作为参数并返回一个修改的版本。
参考
https://www.sitepoint.com/factory-functions-javascript/ (Quick Tip: What Are Factory Functions in JavaScript)