ConstructiCat Logo
CodeBust.
Browse section ▾

نقل الميزات بين الكائنات.

Architectural Patterns Mascot
استخراج الفئة

المشكلة: عندما تقوم فئة واحدة بعمل فئتين، ينتج عن ذلك ارتباك وتعقيد. الحل: بدلاً من ذلك، أنشئ فئة جديدة وضع فيها الحقول والدوال المسؤولة عن الوظائف ذات الصلة.

001
Design Patterns Mascot
إخفاء المفوض

المشكلة: يحصل العميل على الكائن B من حقل أو دالة في الكائن A. ثم يقوم العميل باستدعاء دالة في الكائن B. الحل: أنشئ دالة جديدة في الفئة A تفوض الاستدعاء إلى الكائن B. الآن لا يعرف العميل الفئة B ولا يعتمد عليها.

002
Design Patterns Mascot
تضمين الفئة

المشكلة: الفئة لا تفعل شيئاً تقريباً وليست مسؤولة عن أي شيء، ولا توجد مسؤوليات إضافية مخططة لها. الحل: انقل جميع الميزات من الفئة إلى فئة أخرى.

003
Architectural Patterns Mascot
إدخال تابع خارجي (Introduce Foreign Method)

المشكلة: لا تحتوي فئة أدوات (Utility Class) على التابع الذي تحتاجه ولا يمكنك إضافة التابع إلى الفئة. الحل: أضف التابع إلى فئة عميلة (Client Class) ومرر كائناً من فئة الأدوات إليها كمعامل.

004
Antipatterns Mascot
إدخال امتداد محلي (Introduce Local Extension)

المشكلة: لا تحتوي فئة أدوات (Utility Class) على بعض التوابع التي تحتاجها. ولكن لا يمكنك إضافة هذه التوابع إليها. الحل: أنشئ فئة جديدة تحتوي على التوابع المطلوبة واجعلها إما فئة فرعية (Subclass) أو فئة مغلفة (Wrapper) لفئة الأدوات.

005
Architectural Patterns Mascot
نقل الحقل (Move Field)

المشكلة: يتم استخدام حقل في فئة أخرى أكثر من استخدامه في الفئة الخاصة به. الحل: أنشئ حقلاً في فئة جديدة ووجّه جميع مستخدمي الحقل القديم إليه.

006
Code Smells Mascot
نقل التابع (Move Method)

المشكلة: يتم استخدام تابع في فئة أخرى أكثر من استخدامه في الفئة الخاصة به. الحل: أنشئ تابعاً جديداً في الفئة التي تستخدم التابع بشكل أكبر، ثم انقل الكود من التابع القديم إلى هناك. حوّل كود التابع الأصلي إلى إشارة مرجعية للتابع الجديد في الفئة الأخرى أو احذفه تماماً.

007
Antipatterns Mascot
إزالة الوسيط (Remove Middle Man)

المشكلة: تحتوي الفئة على عدد كبير جداً من التوابع التي تقوم ببساطة بالتفويض لكائنات أخرى. الحل: احذف هذه التوابع واجبر العميل على استدعاء التوابع النهائية مباشرة.

008