Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. OOP

أنماط التصميم: نمط المصنع البسيط

by
Difficulty:IntermediateLength:ShortLanguages:
This post is part of a series called Design Patterns in PHP.
Design Patterns: The Strategy Pattern
Design Patterns: The Command Pattern

Arabic (العربية/عربي) translation by Lamis Beirkdar (you can also view the original English article)

عندما تفكر في كلمة مصنع, ماهو الشي الذي يجول في خاطرك؟ بالنسبة لي, المصنع هو المكان الذي تُصنّع فيه الأشياء -أي هو المكان المركزي الذي تنتج فيه الاغراض. حيث أنه يتم إنهاء هذه الأغراض في المصنع بحسب ترتيب معطيات الطلب.

على سبيل المثال, لنعتبر بأنك قمت بطلب سيارة. المصنع سيقوم بتصنيع السيارة لك بالترتيب المناسب لإنهائها , وسيقوم بتوصيلها عندما تكون جاهزة بالطبع.

البرمجة تماثل تماما طبيعة العالم الحقيقي. حيث أن برمجية المصنع ( برمجية تعمل على تنفيذ نمط المصنع) هي غرض (Object) مسؤول عن إنشاء أغراض أخرى وإيصالها لأغراض تقوم بطلبها وفقا لمتحولات الدخل الموجودة فيها.

هالك ثلاثة أشكال مختلفة لنمط المصنع::

  1. نمط المصنع البسيط:  يسمح للواجهات interfaces بإنشاء أغراض دون عرض كيفية إنشاء الغرض للزبون.
  2. -نمط وظيفة المصنع او Factory Method : يسمح للواجهات بإنشاء أغراض مع السماح للصفوف الأبناء بتحديد أي الصفوف التي يمكن إنشاؤها.
  3. نمط المصنع المجرد :  وهو مختلف عن النمطين السابقين. المصنع المجرد هو واجهة لإنشاء أغراض مترابطة دون الحاجة لتحديد صفوف هذه الأغراض. يمكننا القول بأنها تزود الغرض بمصنع آخر الذي بدوره يكون هو المسؤول عن صنع هذه الأغراض.

المشكلة :

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

لاحقا وبعد مرور القليل من الوقت, تتغير المعطيات ويتقدم البرنامج حيث أنه بدل صف واحد للسيارة قد ينتج لدنيا عدة صفوف , صف لكل نوع سيارة. وقد نحتاج للمرور بكافة الأماكن التي انشئنا فيها الأغراض وتعديلها للصف الجديد الذي هو نوع السيارة.

الحل الأمثل هو عدم إنشاء الأغراض بالطريقة السابقة, وإنما استخدام نمط المصنع للتكفل بإنشاء الاغراض بالطريقة المناسبة.

الحل:

في القسم السابق تحدثنا عن إنشاء أغراض لصف السيارة بإستخدام المصطلح new. ومن ثم واجهنا مشكلة تعدد الصفوف حسب نوع السيارة متل Sedan, SUV إلخ..

لحل المشكلة بالشكل الأمثل قررنا أنه يجب استخدام نمط المصنع لحمل مسؤولية إنشاء الأغراض مهما اختلف شكلها, ومن ثم إستدعاء الميثود الساكنة في المصنع لإنشاء الأغراض.

في الكود السابق , هنالك ميثود ساكنة Static واحدة مسؤولة عن إستدعاء الصف المناسب وإنشاء الغرض حسب النوع المدخل للمتحول. الآن كل مانحتاجه هي صفوف متزامنة لأنواع السيارات:

حتى الآن لدينا هذه الصفوف والميثود الخاصة بنمط تصميم المصنع . كل مانحتاجه هو التدريب على كيفية طلب الميثود وإنشاء أغراض جديدة حتى نكون جاهزين . على سبيل المثال:

إضافة صف جديد:

إضافة صفوف جديدة هو أمر سهل جدا ولايحتاج اي تغيير في نمط المصنع, كل ماعليك هو إنشاء الصف المناسب وهو جاهز للإستخدام:

النتيجة :

عند التفكير بأسلوب أنماط التصاميم, تعتبر فكرة إنشاء أغراض بإستخدام كلمة new فكرة سيئة جداَ. نمط المصنع يحل هذه المشكلة بكونه مكان مركزي لإنشاء الأغراض المطلوبة.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.