الفرق بين المراجعتين لصفحة: «Refactoring/replace subclass with fields»
Khaled-yassin (نقاش | مساهمات) أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: استبدال الأصناف الفرعية بالحقول (Replace Subclass with Fields)}}</noinclude> == المشكلة == لديك أصن...' |
Khaled-yassin (نقاش | مساهمات) طلا ملخص تعديل |
||
سطر 2: | سطر 2: | ||
== المشكلة == | == المشكلة == | ||
لديك أصناف فرعية تختلف فقط في توابع (إعادة الثوابت) الخاصة بها. | لديك أصناف فرعية تختلف فقط في توابع (إعادة الثوابت) الخاصة بها. | ||
[[ملف:Replace Subclass with Fields - Before.png]] | |||
== الحل == | == الحل == | ||
استبدال التوابع بالحقول في الصنف الأصل وحذف الأصناف الفرعية. | استبدال التوابع بالحقول في الصنف الأصل وحذف الأصناف الفرعية. | ||
[[ملف:Replace Subclass with Fields - After.png]] | |||
== لم إعادة التصميم؟ == | == لم إعادة التصميم؟ == |
مراجعة 23:58، 25 نوفمبر 2018
المشكلة
لديك أصناف فرعية تختلف فقط في توابع (إعادة الثوابت) الخاصة بها.
الحل
استبدال التوابع بالحقول في الصنف الأصل وحذف الأصناف الفرعية.
لم إعادة التصميم؟
في بعض الأحيان تكون إعادة التصميم هي الحل لتجنب كتابة الشيفرة البرمجية.
في مثل هذه الحالة، قد يكون التسلسل الهرمي للأصناف الفرعية مختلفًا فقط في القيم المُعادة بواسطة توابع خاصة. هذه التوابع ليست حتى نتيجة الحساب، لكنها ضُبطت بدقة في التوابع نفسها أو في الحقول المُعادة من قِبَل التوابع. لتبسيط بِنية الصنف، يمكن ضغط هذا التسلسل الهرمي في صنف واحد يحتوي علي حقل واحد أو عدة حقول بالقيم الضرورية، بحسب الحالة.
قد تصبح هذه التغييرات ضرورية بعد نقل كمية كبيرة من الوظائف من التسلسل الهرمي للصنف إلى مكان آخر. ويصبح التسلسل الهرمي الحالي غير ذا قيمة وتُصبح الأصناف الفرعية مجرد وحِمل ساكن.
فوائد تطبيق الحل
تبسيط بنية النظام. ويُعد إنشاء أصناف فرعية مُبالغة إذا كان كل ما نريد القيام به هو إعادة قيم مختلفة في توابع مختلفة.
آلية الحل
طبِّق استبدال المُنشِئ بتابع التصميم على الأصناف الفرعية.
استبدل استدعاءات منشئ الصنف الفرعي باستدعاءات تابع تصميم الصنف الفائق.
في الصنف الفائق، حدِد حقول لتخزين قيم كل من توابع الأصناف الفرعية التي تقوم بإعادة قيم ثابتة.
أنشئ مُنشئ صنف فائق محمي لتهيئة الحقول الجديدة.
أنشئ أو عدِّل منشئات الأصناف الفرعية الموجودة بحيث تستدعي المُنشئ الجديد للصنف الأصل وتُمرِر القيم ذات الصلة إليه.
طبِّق كل تابع ثابت في الصنف الأصل بحيث يُعيد قيمة الحقل المطابق. ثم أزِل التابع من الصنف الفرعي.
إذا كان لدى منشئ الصنف الفرعي وظائف إضافية، استخدام تابع مُضمَّن Inline لدمج منشئ في تابع التصميم الفائق.
احذف الصنف الفرعي.