الأنماط في مقابل المعدِّلات

تختلف الأنماط عن المعدِّلات حسب التصميم. لا تحلّ الأنماط محلّ المعدِّلات، بل يتواجد النظامان معًا لتحقيق أهداف مختلفة. داخليًا، يكون النمط معدِّلاً. يمكنك إجراء كل ما يمكن أن تفعله "الأنماط" باستخدام المعدِّلات، ولكن لا تتوفّر كل الوظائف في المعدِّلات ضمن "الأنماط".

في ما يلي مقارنة بين الأنماط والمعدّلات:

الميزة مفاتيح التعديل الأنماط
الهدف الأساسي تحديد السلوكيات والدلالات والتنسيقات المعقّدة تعدّل أدوات التعديل العناصر الفردية في الوقت الفعلي لدالة مركّبة معيّنة ولا تنتقل من المظهر. تحديد المظهر المرئي وحجم العناصر الفردية والخصائص القابلة للتخصيص تعمل الأنماط على مستوى المظهر ويمكن إعادة كتابتها على مستوى المكوّن. تتسرّب هذه القيم إلى الأسفل ويتم تطبيق الأنماط على عناصر قابلة للإنشاء مختلفة.
المنطق إضافي: يتم دمج المعدِّلات معًا لتكوين نتيجة جديدة. قابلة للكتابة فوقها: تفوز السمة الأخيرة التي تم ضبطها في "النمط". تعمل الأنماط كطبقة واحدة من السمات التي تتجاوز بعضها البعض استنادًا إلى تسلسل الأولوية المحدّد.
تطبيق السمات يصعب إدراجها في سمة، ويتم استخدامها عادةً بشكل فردي. بشكلٍ عام، يمكن تطبيق المظاهر على "الأنماط" (يمكنها الوصول إلى CompositionLocal) ويمكن تحديدها مرة واحدة واستخدامها في جميع المكوّنات.
الأداء غالبًا ما تتطلّب التحديثات جميع مراحل Compose الثلاث: الإنشاء والتنسيق والرسم. لتحقيق أداء جيد للرسوم المتحركة الخاصة بالمعدِّلات، يجب غالبًا كتابة إصدارات تستند إلى تعبيرات lambda. تتخطّى مرحلة الإنشاء، وتكون نشطة فقط في مرحلتَي التنسيق والرسم، ما يقلّل من عمليات إعادة الإنشاء. تتطلّب تخصيصًا أقل للعناصر.
الصور المتحركة يتطلّب استخدام عناصر أساسية منفصلة للصور المتحركة، مثل animate*AsState ميزات مضمَّنة في واجهة برمجة التطبيقات animate { } تعالج بعض الرسوم المتحركة نيابةً عنك.

حدود المعدِّلات

تقدّم أدوات التعديل العديد من المزايا في بيئة Compose الحالية. ومع ذلك، تعالج "الأنماط" بعض القيود المفروضة على المعدِّلات، كما توضّح القائمة التالية:

  • يتم عادةً إنشاء المعدِّلات في مرحلة "التركيب". يمكن أن تؤدي التحديثات إلى إعادة تشغيل كاملة لعمليات Composition وLayout وDraw، حتى عند إجراء تغييرات مرئية بسيطة مثل اللون، ما لم تنشئ أدوات تعديل مستندة إلى تعبيرات lambda.
  • تتطلّب أدوات التعديل الشرطية منطق if-else معطّلاً ضمن السلاسل السلسة. ويتطلّب تحريكها رمزًا معياريًا يدويًا للحالة، كما أنّها لا تتضمّن آلية "التحريك التلقائي" عالية الأداء.
  • تتراكم المعدّلات بدلاً من أن تحل محل بعضها. لا يمكنك تجاهل الحدود التلقائية لأحد المكوّنات، بل يمكنك فقط رسم حد ثانٍ فوقه.
  • من الصعب تلخيص المعدِّلات في مواضيع عامة. نتيجةً لذلك، تخزّن المظاهر عادةً القيم الأولية بدلاً من إعدادات المعدِّلات القابلة لإعادة الاستخدام.

القيود المفروضة على "الأنماط"

على الرغم من أنّ "الأنماط" يمكن أن تسدّ بعض الثغرات التي تتضمّنها "المعدّلات"، إلّا أنّها تتضمّن أيضًا بعض القيود التي توضّح أنّه لا يمكنها أن تحلّ محلّ "المعدّلات" بالكامل:

  • الأنماط هي معدِّلات متخصّصة. مع أنّ أداة التعديل يمكنها تنفيذ أي إجراء يمكن أن تنفّذه "السمة"، لا يمكن أن تنفّذ "السمة" أي إجراء يمكن أن تنفّذه أداة التعديل. وبالتالي، يمكن أن تكمل "الأنماط" المعدِّلات، ولكن لا يمكن أن تحل محلها.
  • تقتصر الأنماط على الإعدادات المرئية (الخلفيات والحشو والحدود). ولا يمكنها التعامل مع سلوكيات مثل منطق النقر أو رصد الإيماءات أو دلالات تسهيل الاستخدام.
  • إنّ تحويل نمط إلى حالته النهائية أكثر تكلفة من تطبيق معدِّل واحد. يجب أن ينشئ النظام بنية بيانات تحتوي على جميع قيم السمات المحتملة، ويؤدي البحث عن السمات الموروثة إلى زيادة تعقيد هذه العملية.

حالات استخدام الأنماط بدلاً من المعدِّلات

على الرغم من أنّ قرار استخدام "الأنماط" يعتمد بشكل كبير على تطبيقك وحالات الاستخدام، إلا أنّ الإرشادات التالية تساعد في تحديد الوقت المناسب لتفضيل نمط على معدِّل:

  • لتحقيق الاتساق على مستوى المظهر: تم تصميم الأنماط ليتم "نقلها" إلى مظهر شامل. بدلاً من تمرير المعدِّلات المتكرّرة إلى كل مكوّن، يمكنك تحديد نمط واحد في المظهر لإنشاء مظهر موحّد في جميع أنحاء التطبيق.
  • عند تنفيذ رسوم متحركة متكررة: يتم تقييم الأنماط خلال مرحلتَي "التخطيط" و"الرسم"، ما يتيح تحريك خصائص مثل اللون أو المقياس مع تخطّي مرحلة "التركيب" بالكامل. ويؤدي ذلك إلى تقليل الحمل الزائد للأداء بشكل كبير. استخدِم نمطًا بدلاً من أداة تعديل عند إنشاء رسوم متحركة للعناصر المرئية.
  • الاستبدال مقابل التجميع: استخدِم "الأنماط" عندما تحتاج إلى استبدال خاصية تلقائية. المعدّلات هي إضافية (إضافة حدّ يضيف حدًّا ثانيًا)، بينما تستخدم "الأنماط" منطق "الكتابة الأخيرة هي الأهم"، ما يسهّل استبدال الخلفيات أو المساحة المتروكة بدون تشويش بصري.
  • تخصيص مكونات Material: إذا كان أحد مكونات Material يوفّر مَعلمة Style، يكون هذا هو الأسلوب المقترَح للتخصيص. تتيح لك هذه الأنماط الوصول إلى خصائص معيّنة وتعديلها ضمن البنية الداخلية للعنصر القابل للإنشاء، والتي قد يتعذّر الوصول إليها بطريقة أخرى.