工厂模式,就是将 new 的操作单独的放到一个类中,在创建类时,只需要调用工厂方法就好。这样做的好处是:日后修改某个类名,只需要修改某个类和工厂中的类名即可,不必整个项目中查找。
哎,JS 想要实现工厂模式,缺少 Java 所需的接口,所以实现方式也和 Java 有所不同。
Java UML 类图:
JS UML 类图:
害,由于 JS 没有接口的概念,所以将原本的两个 Product 整合成了一个 Product,并且取消了 interface 。
JS 代码实现:
class Product{
constructor(name) {
this.name = name
}
fn1() {
console.log('fn1')
}
showName() {
console.log(this.name)
}
}
// 工厂类
class Creator{
create(name) {
return new Product(name)
}
}
const creator = new Creator()
let pro1 = creator.create('华为 P40')
pro1.showName()
pro1.fn1()