作者:@佑之以航
本文为作者原创,转载请注明出处:https://www.cnblogs.com/yzyh/p/10305904.html
例一
class Product{//构造函数
constructor(name){
this.name = name
}
init(){
console.log('init')
}
fun1(){
console.log('fun1')
}
fun2(){
console.log('fun2')
}
}
class Creator{//工厂函数
create(name){
return new Product(name)
}
}
//测试
let creator = new Creator()
let p = creator.create('p')
p.init()
p.fun1()
p.fun2()
例二
//工厂模式
class Monther {
// 向妈妈申请所有你想要的 静态方法不需要new 可以直接类名点相应静态方法名 new获取不了静态方法
static giveMe(whatYouWant) {
switch (whatYouWant) {
// 糖糖
case "tangtang":
console.log("宝宝,你一个人吃果冻是非常危险的哦,妈妈喂你~~");
return this.chewJelly(new Jelly);
// 飞飞
case "feifei":
console.log("宝宝,家里已经买了很多飞机了哦,")
return null;
default: return null;
}
}
static chewJelly(jelly) {
jelly.chewed = true;
return jelly;
}
}
class Jelly {
constructor() {
// 是否咀嚼过的果冻
this.chewed = false;
}
}
class ToyPlane {}
let jelly = Monther.giveMe('tangtang'); //宝宝,你一个人吃果冻是非常危险的哦,妈妈喂你~~
let toyPlane = Monther.giveMe('feifei'); //宝宝,家里已经买了很多飞机了哦,
工厂模式
1.能对代码运作有效解耦 创建是创建 运行是运行
2.减少重复代码
3.对于使用者更加友好
使用范围:如果产品类很复杂,而且存在太多变数,其构造过程也很复杂
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步