欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js设计模式3-抽象工厂模式

程序员文章站 2022-05-23 19:41:18
...

这里要多实现一个超级工厂,常见不同的工厂,然后再创建实体,相比工厂模式,继承上要多了一个抽象类的继承

class Football {
  round () {
    console.log('我是脚踢的')
  }
}

class Basketball {
  round () {
    console.log("我是手打的")
  }
}

class Bycle {
  round () {
    console.log("我是用来骑得")
  }
}

class Car {
  round () {
    console.log("我是用来开的")
  }
}
//抽象类
class SuperClass {
  getCar () {
    throw new Error("必须创建改方法")
  }
  getBall () {
    throw new Error("必须创建改方法")
  }
}




//实现工厂
class Mincar extends SuperClass {
  getCar (car) {
    car = car.toLocaleLowerCase();
    switch (car) {
      case 'bycle':
        return new Bycle();
      case 'car':
        return new Car();
      default:
        break;
    }
  }
  getball () {
    return null;
  }
}


class Ball extends SuperClass {
  getball (ball) {
    this.ball = ball.toLocaleLowerCase();
    switch (ball) {
      case 'football':
        return new Football();
      case 'basketball':
        return new Basketball();
      default:
        break;
    }
  }
  getCar () {
    return null;
  }
}



//实现超级类

class Factory {
  constructor(type) {
    this.types = type.toLocaleLowerCase();
    switch (type) {
      case 'ball':
        return new Ball();
      case 'car':
        return new Mincar();
      default:
        break;
    }
  }
}



//实现方式
//创建工厂
const carFac = new Factory('car');
const c1 = carFac.getCar('car');
const c2 = carFac.getCar('Bycle');
c1.round()
c2.round()

我是用来开的
我是用来骑得