Oops !! you don't speak Arabic, this text is for you :

Mimoun AIT ALI

My name's Mimoun, I'm a freelance developer, designer, blogger, linux geek. I run JavaNux.com and I specialize in WordPress, Drupal, CakePHP, CSS, XHTML and PHP

   

Mimoun AIT ALI السلام عليكم، أدعى ميمون أيت علي  مبرمج و مصمم، أعمل بشكل حر (Freelance) مهتم بالويب وقابلية الاستخدام واجهات المستخدم بشكل عام، يمكنك إلقاء نظرة على أعمالي أو راسلني لمناقشة مشروعك.

تعليق واحد

نماذج التصميم Design Patterns

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

استخدام نماذج التصميم

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

نماذج التصميم الإنشائية Creational patterns

هذا النوع من النماذج متعلقة بكل ما هو class instantiation. و هي كالتالي :

Abstract Factory : خلق instance من أنواع متعددة من الكلاسات
Builder : عزل خلق الكائن عن تمثيله (representation)
Factory Method : خلق instance من كلاسات مستمدة متعددة
Prototype : نسخ instances
Singleton : خلق كلاس بحيث يمكن التحكم في عدد instances

نماذج التصميم الهيكلية Structural patterns

هذه النماذج متعلقة بالكلاس و تكوين الكائن. و هي كالتالي :

Adapter
ربط واجهات (interfaces) كلاسات متعددة
Bridge
عزل واجهة كائن عن تطبيقه (implementation)
Composite
شجرة من الكائنات العادية و المركبة
Decorator
إضافة مسؤولية لكائن دِينَامِيكِيّا
Facade
كلاس واحدة كمقدمة لنظام كامل
Flyweight
يمكن من تحديد الكائنات المستعملة مرات عديد في نفس البرنامج
Proxy
كائن يقدم كائن أخر

نماذج التصميم السلوكية Behavioral patterns

نماذج التصميم السلوكية متعلقة بالتواصل بين الكائنات.

Chain of responsibility
طريقة تمرير الطلبات بين سلسة من الكائنات
Command
تغليف طلب ككائن
Interpreter
الطريقة الأسهل صنع مترجم (Compiler) ،
Iterator
النفاذ المتتالي إلى مكونات مجوعة
Mediator
الطريقة الأمثل للتواصل بين الكلاسات
Memento
حفظ الحالة الداخلية لكائن
Observer
طريقة لإعلان عن تغير في حالة كائن
State
تغيير سلوك كائن عندما تتغير حالته
Strategy
تغليف خوارزمية داخل كلاس
Template method
ترك اختيار الخطوة التالية من خوارزمية للكلاسي الفرعية
Visitor
يسمح بتحديد عملية أخرى للكلاس بدون تغيرها

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



تعليق واحد على الموضوع

  1. عبدالله القحطاني فكر في الامر ثم قال :

    بارك الله فيك موضوع ممتاز وجميل وشرح اجمل
    الموضوع مهم ويجهله كثير من المصممين والمبرمجين
    ويوجد الكثير من المصادر الانجليزيه في هذا الموضوع ولكن ترجمته بشكل واضح بالعربية يضاف الى حسابك اخي في المساعدة على نشر هذا الموضوع عربيا

    عذرا ولكن احب ان اعطي لك فقط قليل من ال مواضيع المرتبطة حتى يزيد هذا الموضوع كمالا

    وهو موضوع

    architectural design pattern

    وهو تقسيم اضيف للنماذج اضافة الى الثلاثة الاولى

    وخير مرجع لك سيكون كتاب
    Pattern Oriented Software Architecture
    a system of Patterns

    by F.buschmann

    وفقك الله اخي وبارك فيك وفي اهل المغرب العربي

    اخوك
    عبدالله القحطاني
    السعودية

كل الحقوق محفوظة لـ JavaNux