يعني إيه؟
زي مصنع سيارات - كل خط إنتاج بينتج نوع مختلف! 🚗
مش محتاج تعرف إزاي بتتصنع - بس قول عايز إيه و المصنع يتكفل!
🏭
الـ Abstract Class اللي بيعرف الـ Factory Method - كل Subclass بتعمل Override وتنتج منتج مختلف!
المصانع الفعلية زي BMWFactory, TeslaFactory - كل واحد بيعمل implement للـ createCar()!
المنتج النهائي - كل Factory بترجع نوع مختلف من السيارات!
// 🚗 Product Interface
class Car {
drive() { throw "implement!"; }
getInfo() { throw "implement!"; }
}
// Concrete Products
class BMW extends Car {
drive() { return "🚙 BMW driving smoothly!"; }
getInfo() { return "BMW X5 - German Engineering"; }
}
class Tesla extends Car {
drive() { return "🚗 Tesla zooming silently!"; }
getInfo() { return "Tesla Model 3 - Electric Power"; }
}
class Toyota extends Car {
drive() { return "🚕 Toyota cruising reliably!"; }
getInfo() { return "Toyota Camry - Japanese Quality"; }
}
// 🏭 Creator (Abstract Factory)
class CarFactory {
// Factory Method - Subclasses override this!
createCar() { throw "implement createCar()!"; }
// Common operation using the factory method
deliverCar() {
const car = this.createCar(); // 👈 Factory Method!
return `Delivering: ${car.getInfo()}`;
}
}
// Concrete Factories
class BMWFactory extends CarFactory {
createCar() { return new BMW(); } // 🔷 Creates BMW
}
class TeslaFactory extends CarFactory {
createCar() { return new Tesla(); } // 💚 Creates Tesla
}
class ToyotaFactory extends CarFactory {
createCar() { return new Toyota(); } // ❤️ Creates Toyota
}
// 🎯 Client Code - مش محتاج يعرف تفاصيل السيارات!
function orderCar(factory) {
const car = factory.createCar();
console.log(car.getInfo());
console.log(car.drive());
return factory.deliverCar();
}
// Usage:
const bmwFactory = new BMWFactory();
const teslaFactory = new TeslaFactory();
orderCar(bmwFactory); // BMW X5 - German Engineering
orderCar(teslaFactory); // Tesla Model 3 - Electric Power
// 🔥 Adding new car? Just create new Factory + Product!
// No changes to existing code! ✅ Open/Closed Principle
اختار مصنع لإنتاج سيارة!
عايز تعمل Buttons مختلفة لـ Windows, Mac, Linux - كل Factory تنتج الـ UI المناسب!
MySQL, PostgreSQL, MongoDB - كل Factory تعمل Connection مختلف!
PDF, Word, Excel - كل Factory تنتج Document مختلف!
Enemies, Weapons, Power-ups - كل Level Factory تنتج Objects مختلفة!