Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. class Car {
  2. constructor(doors = 4, state = "brand new", color = "silver") {
  3. this.doors = doors
  4. this.state = state
  5. this.color = color
  6. }
  7. }
  8.  
  9. class Truck {
  10. constructor(state = "used", wheelSize = "large", color = "blue") {
  11. this.state = state
  12. this.wheelSize = wheelSize
  13. this.color = color
  14. }
  15. }
  16.  
  17. class VehicleFactory {
  18. vehicleClass = Car
  19. createVehicle = (type, props) => {
  20. switch(type) {
  21. case "car":
  22. return new this.vehicleClass(props.doors, props.state, props.color)
  23. case "truck":
  24. return new this.vehicleClass(props.state, props.wheelSize, props.color)
  25. }
  26. }
  27. }
  28.  
  29. // Let's build a vehicle factory!
  30.  
  31. const factory = new VehicleFactory()
  32. const car = factory.createVehicle( "car", {
  33. doors: 6,
  34. color: "green"
  35. })
  36.  
  37. console.log(JSON.stringify(car))
  38.  
  39. const truck = factory.createVehicle( "truck", {
  40. state: "like new",
  41. color: "red",
  42. wheelSize: "small"
  43. })
  44.  
  45. console.log(JSON.stringify(truck))
  46.  
  47. // Let's build a truck factory!
  48.  
  49. class TruckFactory extends VehicleFactory {
  50. vehicleClass = Truck
  51. }
  52.  
  53. const truckFactory = new TruckFactory()
  54. const bigTruck = truckFactory.createVehicle( "truck", {
  55. state: "omg ... so bad",
  56. color: "pink",
  57. wheelSize: "so BIG"
  58. })
  59.  
  60. console.log(JSON.stringify(bigTruck))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement