نمط طريقة المصنع: الفرق بين النسختين
[مراجعة غير مفحوصة] | [مراجعة غير مفحوصة] |
تم حذف المحتوى تمت إضافة المحتوى
Mahmoud2013 (نقاش | مساهمات) طلا ملخص تعديل وسم: تعديل مصدر 2017 |
Mahmoud2013 (نقاش | مساهمات) |
||
سطر 5:
يعد نمط تصميم طريقة المصنع <ref name="GoF">{{استشهاد بكتاب|مؤلف1=Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides|عنوان=Design Patterns: Elements of Reusable Object-Oriented Software|سنة=1994|ناشر=Addison Wesley|ISBN=0-201-63361-2|صفحات=[https://archive.org/details/designpatternsel00gamm/page/107 107ff]|مسار=https://archive.org/details/designpatternsel00gamm/page/107| مسار أرشيف = https://web.archive.org/web/20200518204757/https://archive.org/details/designpatternsel00gamm/page/107 | تاريخ أرشيف = 18 مايو 2020 }}</ref> أحد ''[[خطط التصميم (حاسوب)|أنماط التصميم "عصابة الأربعة"]]'' التي تصف كيفية حل مشكلات التصميم المتكررة لتصميم برامج مرنة و<nowiki/>[[برمجة كائنية التوجه|موجهة]] قابلة لإعادة الاستخدام، أي الكائنات التي يسهل تنفيذه أو تغييرها أو اختبارها، وإعادة استخدامها.
يتم استخدام نمط (تصميم) طريقة المصنع بدلاً من [[دالة البناء (برمجة كائنية التوجه)|مُنشئ]] [[صنف (حوسبة)|الصنف]] العادي للاحتفاظ بمبدأ [[SOLID (تصميم كائني المنحى)|SOLID]] للبرمجة، وفصل بناء الكائنات عن الكائنات نفسها.
| مسار = http://w3sdesign.com/?gr=c03&ugr=proble
| عنوان = The Factory Method design pattern - Problem, Solution, and Applicability
سطر 13:
* يسمح ببناء الاصناف بمكون من نوع لم يتم تحديده مسبقًا، ولكن يتم تعريفه فقط في "واجهة" أو التي يتم تعريفها على أنها نوع ديناميكي.
: وبالتالي، على سبيل المثال، يمكن إنشاء صنف <code>Vehicle</code> (مركبة) التي تحتوي على محرك عضو من واجهة محرك <code>IMotor</code>، ولكن لا يوجد نوع محدد من المحرك <code>Motor</code> معرف مسبقًا، عن طريق إخبار [[دالة البناء (برمجة كائنية التوجه)|مُنشئ]] السيارة <code>Vehicle constructor</code> باستخدام محرك كهربائي <code>ElectricMotor</code> أو محرك بنزين <code>GasolineMotor</code>. يستدعي كود [[طريقة (برمجة حاسوب)|مُنشئ]] المركبة <code>Vehicle constructor</code> بعد ذلك [[طريقة (برمجة حاسوب)|طريقة]] مصنع المحرك، لإنشاء المحرك المطلوب الذي يتوافق مع واجهة <code>IMotor</code>.
* يسمح ببناء الاصناف الفرعية إلى أحد الأصناف الأبوية الذي لم يتم تحديد نوع مكوناته مسبقًا، ولكن تم تعريفه فقط في واجهة، أو تم تعريفه على أنه نوع ديناميكي.
: على سبيل المثال، يمكن لمركبة من الصنف <code>Vehicle</code> التي لديها عضو محدد بنوع ديناميكي، أن تحتوي على اصناف فرعية من النوع <code>ElectricPlane</code> و <code>OldCar</code> تم تصميم كل منها بنوع مختلف من المحركات. يمكن تحقيق ذلك عن طريق بناء الاصناف الفرعية بطريقة مصنع المركبات، مع توفير نوع المحرك. في مثل هذه الحالات قد يكون المنشئ مخفيًا.
* يسمح لكود أكثر قابلية للقراءة في الحالات التي توجد فيها
: على سبيل المثال إذا كان هناك نوعان من
يسمح
*
: على سبيل المثال، يمكن منع المركبة Vehicle من أن يتم تمثيلها
إنشاء كائن مباشرة داخل الصنف الذي يتطلب أو يستخدم الكائن غير
يتم استخدام نمط تصميم طريقة المصنع من خلال تحديد عملية منفصلة أولاً، ''طريقة
== تعريف ==
|