نماذج التصميم في هندسة البرمجيات هي حلول عامة لمشاكل متكررة في تصميم البرمجيات. و هذه النظرية تطبق في مجالات كثرة و متعددة, أنا هنا سأتحدث عن كيفية استخدامها في البرمجة.
الشيء الأول الذي يجب أن تعلمه أن نماذج التصميم ليست حلول جاهزة للاستخدام مباشرة (ليس هناك نسخ لصق), و أيضا هي ليست مرتبطة بلغة برمجة محددة بل هي فقط نماذج لحلول يجب تحديدها و تكييفها لكل مشكلة برمجية.
استخدام نماذج التصميم
تُسرع نماذج التصميم من عملة البرمجة بوضع صيغ للتطوير مؤكدة , في الواقع تصميم البرامج يتطلّب الأخذ بالاعتبار بعض المشاكل التي قد لا تظهر إلا في وقت التطبيق, و إعادة استخدام نماذج التصميم تساعد على إيجاد حل ذكي لهذه المشاكل و تحسن من الشفرة البرمجية.
معظم الناس تعرف كيف تطبق بعض تقنيات تصميم البرامج لحل بعض المشاكل. هذه التقنيات صحيح أنها قد تساعد في حل المشكل لكن تبقى صالحة لحل مشكل محدد فقط, و هنا يظهر دور نماذج التصميم حيث تعطي حلول عامة غير مرتبطة بمشكلة معينة واحدة و يمكن تطبيقها لحل مشاكل متعددة.
بالإضافة لكل ما سبق نماذج التصميم أيضا تمكن المبرمجين من التواصل باستعمال أسماء معروفة و مفهومة لطرق حل المشاكل البرمجية.
نماذج التصميم الإنشائية 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
يسمح بتحديد عملية أخرى للكلاس بدون تغيرها
هذه فقط مقدمة حاولت أن أفتح بها شهيتكم للموضوع و في المستقبل إن شاء الرحمن سأخصص تدوينة او أكثر لكل نموذج و الله المستعان.
إذا كان لديكم اي اقتراح او استفسار انا في الخدمة.
يوم يناير 18th, 2009 على الساعة 20 h 10 min
بارك الله فيك موضوع ممتاز وجميل وشرح اجمل
الموضوع مهم ويجهله كثير من المصممين والمبرمجين
ويوجد الكثير من المصادر الانجليزيه في هذا الموضوع ولكن ترجمته بشكل واضح بالعربية يضاف الى حسابك اخي في المساعدة على نشر هذا الموضوع عربيا
عذرا ولكن احب ان اعطي لك فقط قليل من ال مواضيع المرتبطة حتى يزيد هذا الموضوع كمالا
وهو موضوع
architectural design pattern
وهو تقسيم اضيف للنماذج اضافة الى الثلاثة الاولى
وخير مرجع لك سيكون كتاب
Pattern Oriented Software Architecture
a system of Patterns
by F.buschmann
وفقك الله اخي وبارك فيك وفي اهل المغرب العربي
اخوك
عبدالله القحطاني
السعودية