هو نوع خاص من الـ constructor يسمح لك بالتحكم الكامل في طريقة إنشاء الكائن (object). يمكن أن يُرجع كائن جديد، أو يعيد كائن موجود سابقًا، أو حتى يرجع كائن من نوع مختلف.
✅ لماذا نستخدم factory؟
السبب
التوضيح
🔁 إعادة استخدام كائن موجود
مثل Singleton (كائن واحد فقط)
🔍 تنفيذ منطق قبل إنشاء الكائن
مثل التحقق من صحة البيانات
🔄 إرجاع نوع مختلف أو null
مثل تحويل JSON إلى كائن معين
🧠 تحسين الأداء والذاكرة
عدم إنشاء أكثر من نسخة من نفس الكائن
✅ الشكل العام:
classMyClass {factoryMyClass() {// منطق مخصصreturn ...; // ترجع كائن من نفس النوع أو نوع مختلف }}
Dart
✅ الفرق بين factory و constructor العادي
المقارنة
Constructor العادي
Factory Constructor
ينشئ كائن جديد دائمًا؟
✅ نعم
❌ ليس دائمًا
يمكنه إرجاع نوع مختلف؟
❌ لا
✅ نعم
يمكنه استخدام return؟
❌ لا
✅ نعم
مفيد للتحكم الكامل بالإنشاء؟
❌ لا
✅ نعم
✅ مثال 1: التحقق من صحة البيانات
classUser {finalString name;User._(this.name); // private constructorfactoryUser(String name) {if (name.isEmpty) {throwException("الاسم لا يمكن أن يكون فارغًا"); }returnUser._(name); }}voidmain() {var user =User("Ali"); // ✅ يعمل// var user2 = User(""); // ❌ سيرمي Exception}