SOURCE

// 运算基类
class Operate {
    constructor(numA, numB) {
        this.numA = numA;
        this.numB = numB;
    }
    getResult() {
        throw new Error('getResult需要重写')
    }
}
// 加法类
class Add extends Operate {
    constructor(numA, numB) {
        super(numA, numB)
    }
    getResult() {
        return this.numA + this.numB
    }
}
// 加法类
class  Division extends Operate {
    constructor(numA, numB) {
        super(numA, numB)
    }
    getResult() {
        return this.numA / this.numB
    }
}
// 乘法类
class Mul extends Operate {
    constructor(numA, numB) {
        super(numA, numB)
    }
    getResult() {
        return this.numA * this.numB
    }
}
// 减法类
class Sub extends Operate {
    constructor(numA, numB) {
        super(numA, numB)
    }
    getResult() {
        return this.numA - this.numB
    }
}
// 工厂类 生成对应的运算工厂类
class Factory {
    static map = {Add, Division, Mul, Sub }
    static getOperate=(type = 'Add', numA = 0, numB = 0) => new Factory.map[type](numA, numB)
}
console.log(Factory.getOperate('Add', 1, 2).getResult())//3
console.log(Factory.getOperate('Mul', 1, 2).getResult())//2
console.log(Factory.getOperate('Sub', 1, 2).getResult())//-1
console.log(Factory.getOperate('Division', 1, 2).getResult())//0.5
console 命令行工具 X clear

                    
>
console