Answer
t.me/js_testОтвет:
class Car {
constructor(type, wheels, doors) {
this.type = type;
this.wheels = wheels;
this.doors = doors;
}
startEngine() {
console.log(`${this.type} startEngine`);
}
stopEngine() {
console.log(`${this.type} stopEngine`);
}
}
class CarFactory {
static createCar() {
return new Car("Car", 6, 4);
}
static createTruck() {
return new Car("Truck", 6, 4);
}
}
Объяснение:
В классе Car нужно хранить всего лишь 3 поля: type, wheels и doors и два метода startEngine и stopEngine для обработки поведения двигателя. А в классе CarFactory нужно создать два статических метода createCar и createTruck которые возвращают инстансы класса Car с разными параметрами.
Код для проверки:
class Car {
constructor(type, wheels, doors) {
this.type = type;
this.wheels = wheels;
this.doors = doors;
}
startEngine() {
console.log(`${this.type} startEngine`);
}
stopEngine() {
console.log(`${this.type} stopEngine`);
}
}
class CarFactory {
static createCar() {
return new Car("Car", 6, 4);
}
static createTruck() {
return new Car("Truck", 6, 4);
}
}
const car = CarFactory.createCar();
const truck = CarFactory.createTruck();
console.log(car.wheels); // 4
console.log(truck.wheels); // 6
console.log(truck.doors); // 4
console.log(truck.doors); // 4
car.startEngine(); // Car startEngine
truck.startEngine(); // Truck startEngine
car.stopEngine(); // Car stopEngine
truck.stopEngine(); // Truck stopEngine