Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ما هي عيوب استخدام singletons في MVVMCROSS


ما هي عيوب استخدام singletons في MVVMCROSS


على الرغم من أنها مفيدة لضمان مثيل واحد للفصل ، فإن هناك العديد من العيوب التي يمكن أن تؤثر على قابلية الصيانة وقابلية التوسع في التطبيقات ، بما في ذلك أولئك الذين يستخدمون MVVMCROSS. فيما يلي بعض القضايا الرئيسية:

1. مشكلات الاختبار **

من الصعب اختبار المفردات لأنها تحتفظ بالدولة وإدارة دورة حياتهم الخاصة. هذا يجعل من الصعب كتابة اختبارات الوحدة التي لا تتفاعل عن غير قصد مع الشبكة أو الأنظمة الخارجية الأخرى. في MVVMCROSS ، حيث يكون الاختبار أمرًا بالغ الأهمية لضمان موثوقية نماذج العرض والمكونات الأخرى ، يمكن أن يعيق المفردات القدرة على عزل واختبار المكونات الفردية بفعالية [1] [4].

2

في البيئات متعددة الخيوط ، يمكن أن تؤدي المفردات إلى عدم تناسق البيانات إن لم تكن متزامنة بشكل صحيح. يمكن أن يؤدي ذلك إلى سلوك غير حتمي ، مما يجعل من الصعب تصحيح المشكلات. على الرغم من أنه من الممكن جعل Singletons آمنًا لخيط الخيط ، فإن هذا يضيف التعقيد ولا يتم دائمًا بشكل صحيح [2] [4].

3. التبعيات الخفية والاقتران **

تشجع المفردات التبعيات الخفية من خلال توفير نقطة عالمية للوصول إلى الموارد. يمكن أن يؤدي ذلك إلى اقتران ضيق بين الفصول الدراسية ، لأنها تعتمد جميعها على تطبيق الملموسة المسلح. في MVVMCROSS ، حيث يكون الاقتران الفضفاض مفيدًا للحفاظ على بنية نظيفة ، يمكن أن تقوض المفردات هذا المبدأ بجعل من الصعب تغيير المكونات أو استبدالها دون التأثير على النظام بأكمله [2] [3].

4. انتهاك المبادئ الصلبة **

ينتهك المفردات عدة مبادئ صلبة:
- مبدأ المسؤولية الفردية (SRP): غالبًا ما تدير المفردات دورة حياتهم الخاصة بالإضافة إلى مسؤولياتها الأساسية ، والتي يمكن أن تؤدي إلى تعقيد غير ضروري.
-مبدأ انعكاس التبعية (DIP): يجب ألا تعتمد الوحدات النمطية عالية المستوى على التفاصيل ذات المستوى المنخفض ، ولكن مع المفردات ، فإنها غالباً ما تفعل ، لأنها تعتمد على تنفيذ الملموسة المسلح [2] [3].

5. قيود التوسع والمرونة **

يمكن أن تحد المفردات من قابلية التوسع من خلال جعل من الصعب التكيف مع المتطلبات المتغيرة. إذا احتاج أي طلب إلى التعامل مع مثيلات متعددة لمورد ما أو تغيير كيفية إدارة الموارد ، يمكن أن تصبح المفردات عنق الزجاجة. في MVVMCROSS ، حيث تكون المرونة مهمة للتعامل مع المنصات والتكوينات المختلفة ، يمكن أن تقيد المفردات هذه القدرات [7].

6. تحديات إدارة الدولة **

تحمل Singletons حالة لمدى عمر التطبيق ، مما قد يجعل من الصعب إعادة تعيين أو إدارة الحالة بفعالية. هذا يمثل مشكلة خاصة في التطبيقات التي تحتاج إلى تحديثها أو تحديثها بشكل متكرر [4].

بدائل لـ Singletons

لتجنب هذه العيوب ، غالبًا ما يتحول المطورون إلى حقن التبعية كبديل أكثر مرونة وقابل للصيانة. يسمح حقن التبعية بالاقتران بشكل فضفاض واختباره بسهولة من خلال توفير تبعيات من خلال المُنشئين أو غيرها من الوسائل ، بدلاً من الاعتماد على الحالات العالمية [1] [7]. في MVVMCROSS ، يمكن أن يساعد استخدام حقن التبعية في الحفاظ على بنية نظيفة وقابلة للتطوير أسهل في الاختبار والصيانة.
الاستشهادات:
[1] https://www.reddit.com/r/iosprogramming/comments/9zxqj1/why_i_cant_use_singleton_why_it_is_bad_design/
[2] https://www.youtube.com/watch؟v=x6gbdwfnin4
[3] https://www.davidtanzer.net/david's٪20blog/2016/03/14/6-rasons-why-you-hould-avoid-singletons.html
[4] https://matteomanferdini.com/swift-singleton/
[5] https://forums.kodeco.com/t/why-i-cant-use-singleton-why-it-is-bad-design-patern/56168
[6]
[7] https://www.linkedin.com/advice/0/what-benefits-drawbacks-using-singleton-1e
[8] https://softwareengineering.stackexchange.com/questions/40373/so-singletons-are-bad-then-what