يعني إيه؟
زي محل أثاث - لو اختارت ستايل "مودرن" كل القطع هتكون مودرن! 🛋️
مش هتلاقي كنبة كلاسيك مع ترابيزة مودرن - كل العائلة
متناسقة! 🎨
الـ Interface اللي بيعرف إزاي نعمل عائلة كاملة من المنتجات - createSofa() و createTable() و createChair()!
المصانع الفعلية زي ModernFactory و ClassicFactory - كل مصنع بينتج ستايل واحد بس!
عائلة المنتجات المتناسقة - كل القطع من نفس الستايل عشان البيت يبقى شكله حلو!
// 🛋️ Abstract Products
class Sofa {
sit() { throw "implement!"; }
}
class Table {
placeItems() { throw "implement!"; }
}
// Concrete Products - Modern Family 🔵
class ModernSofa extends Sofa {
sit() { return "🛋️ Sitting on sleek Modern Sofa"; }
}
class ModernTable extends Table {
placeItems() { return "📱 Placing laptop on Modern Glass Table"; }
}
// Concrete Products - Classic Family 🟣
class ClassicSofa extends Sofa {
sit() { return "🛋️ Relaxing on ornate Classic Sofa"; }
}
class ClassicTable extends Table {
placeItems() { return "📚 Placing books on Classic Wooden Table"; }
}
// 🏭 Abstract Factory
class FurnitureFactory {
createSofa() { throw "implement!"; }
createTable() { throw "implement!"; }
}
// Concrete Factories
class ModernFactory extends FurnitureFactory {
createSofa() { return new ModernSofa(); } // 🔵
createTable() { return new ModernTable(); } // 🔵
}
class ClassicFactory extends FurnitureFactory {
createSofa() { return new ClassicSofa(); } // 🟣
createTable() { return new ClassicTable(); } // 🟣
}
// 🎯 Client Code - مش عارف التفاصيل!
class LivingRoom {
constructor(factory) {
this.sofa = factory.createSofa();
this.table = factory.createTable();
}
furnish() {
console.log(this.sofa.sit());
console.log(this.table.placeItems());
}
}
// Usage:
const modernRoom = new LivingRoom(new ModernFactory());
modernRoom.furnish();
// 🛋️ Sitting on sleek Modern Sofa
// 📱 Placing laptop on Modern Glass Table
const classicRoom = new LivingRoom(new ClassicFactory());
classicRoom.furnish();
// 🛋️ Relaxing on ornate Classic Sofa
// 📚 Placing books on Classic Wooden Table
// ✅ مستحيل نخلط Modern Sofa مع Classic Table!
اختار ستايل!
اختار Factory وشوف العائلة كلها!
بينتج نوع واحد من المنتجات
بينتج عائلة كاملة من المنتجات!