0Pricing
Dart Academy · درس

بنّاءات factory وconst

خزّن مؤقتًا أو أعد أنواعًا فرعية أو أنشئ كائنات وقت الترجمة

بنّاءات factory وconst درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.

ما هو Factory Constructor

يشبه factory constructor العادي، لكنك تتحكم فيما يعيده؛ لذلك لا يتعين عليه إنشاء كائن جديد تمامًا في كل مرة.

class Logger {
  factory Logger() => _shared;
}

يمكن لـ factory إعادة كائن مخزّن مؤقتًا

لأنه يعيد كائنًا بدلًا من إنشائه دائمًا، يستطيع factory إعادة instance cached، وهو مثالي لـ singletons أو pools.

class Logger {
  static final _it = Logger._();
  Logger._();
  factory Logger() => _it;
}

يمكن لـ factory إعادة subtype

يمكن لـ factory إعادة أي كائن من النوع الصحيح، بما في ذلك subclass، مما يتيح اختيار الصنف الملموس وقت التشغيل.

factory Shape(String k) =>
    k == "box" ? Box() : Dot();

يجب على factory الإرجاع

بخلاف constructor العادي، يملك factory جسمًا يجب أن يُجري return لـ instance؛ ولا يعيّن الحقول مباشرةً باستخدام this.

factory User.fromJson(Map j) {
  return User(j["name"]);
}

Factory شائع للتحليل

يتألق نمط factory في التحليل، مثل إنشاء كائن من خريطة. وتُستخدم طريقة fromJson على نطاق واسع في Dart وFlutter.

factory User.fromJson(Map<String, dynamic> j) =>
    User(j["name"]);

ما هو Const Constructor

يتيح لك const constructor إنشاء كائنات ثابتة وقت الترجمة، تكون جميع حقولها final ومعروفة مسبقًا.

class Point {
  final int x, y;
  const Point(this.x, this.y);
}

إنشاء Instances من const

استدعِه باستخدام الكلمة المفتاحية const لإنشاء كائن ثابت. ويكون كائنان من const بالقيم المتساوية instance واحدة بالفعل.

const a = Point(1, 2);
const b = Point(1, 2);
print(identical(a, b)); // true

قواعد Const Constructors

يجب أن يكون كل حقل final، وأن يكون جسم constructor فارغًا. وتسمح هذه القواعد لـ Dart بتثبيت الكائن وقت الترجمة.

class Color {
  final int v;
  const Color(this.v);
}

يوفر const الذاكرة

تُحوَّل كائنات const المتطابقة إلى instance واحدة مشتركة عبر canonicalized، لذلك لا تكلف إعادة استخدامها ذاكرة إضافية.

const reds = [Color(255), Color(255)];

factory مقابل const باختصار

استخدم factory عندما تقرر ما ستعيده وقت التشغيل؛ واستخدم const عندما تريد قيمًا غير قابلة للتغيير معروفة وقت الترجمة.

دمج الأفكار

يمكن للصنف توفير constructor عادي، وfactory للتحليل، وconst للقيم الثابتة، وبذلك يغطي كل احتياجات creation.

تحقق سريع

تحقق سريع من factory constructors.

مراجعة: factory وconst

تعلمت أن factory constructors تتحكم فيما تعيده، بينما تنشئ const constructors كائنات مشتركة وغير قابلة للتغيير وقت الترجمة. عمل رائع! 🎉

الأسئلة الشائعة

هل درس «بنّاءات factory وconst» مجاني؟

نعم — نص درس «بنّاءات factory وconst» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.

ماذا ستتعلم في «بنّاءات factory وconst»؟

خزّن مؤقتًا أو أعد أنواعًا فرعية أو أنشئ كائنات وقت الترجمة تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟

لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «بنّاءات factory وconst»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟

نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. البنّاءات الافتراضية والمعلَّمة بالمعاملات
  2. بنّاءات مسماة لوضوح القصد
  3. قوائم التهيئة وإعادة التوجيه
  4. بنّاءات factory وconst
← العودة إلى Dart Academy