الفرق بين المراجعتين ل"Design Patterns"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
(4 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:أنماط التصميم}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:أنماط التصميم}}</noinclude>
أنماط التصميم هي أساليب نموذجية تحل المشاكل التي تتكرر كثيرًا في تصميم البرمجيات، ويمكن تشبيهها بالمخططات التي تستخدمها -وتُعدَّلها أيضًا- من أجل إصلاح مشكلة بعينها في شيفرتك.
+
أنماط التصميم (Design Patterns) هي أساليب نموذجية تحل المشاكل التي تتكرر كثيرًا في تصميم البرمجيات، ويمكن تشبيهها بالمخططات التي تستخدمها -وتُعدَّلها أيضًا- من أجل إصلاح مشكلة بعينها في شيفرتك.
  
 
==مقدمة إلى أنماط التصميم==
 
==مقدمة إلى أنماط التصميم==
سطر 8: سطر 8:
 
==أنماط التصميم الإنشائية Creational Design Patterns==
 
==أنماط التصميم الإنشائية Creational Design Patterns==
 
===[[Design Patterns/factory method|نمط أسلوب المصنع Factory Method]]===
 
===[[Design Patterns/factory method|نمط أسلوب المصنع Factory Method]]===
شرح لنمط أسلوب المصنع في التصميم البرمجي، والمشكلة التي يحلها وكيفية استخدامه ومزاياه وعيوبه.
+
أسلوب المصنع هو نمط تصميم إنشائي (creational) يوفر واجهة لإنشاء الكائنات (objects) داخل فئات رئيسية (superclasses) لكنها تسمح في نفس الوقت للفئات الثانوية (subclasses) بتغيير نوع تلك الكائنات التي سيتم إنشاؤها.
  
 
===[[Design Patterns/abstract factory|نمط المصنع المجرد Abstract Factory]]===
 
===[[Design Patterns/abstract factory|نمط المصنع المجرد Abstract Factory]]===
===[[Design Patterns/prototype|نمط النموذج الأولي]]===
+
نمط المصنع المجرَّد هو نمط تصميم إنشائي يسمح لك بإنتاج عائلات من الكائنات المرتبطة ببعضها دون تحديد فئاتهم الحقيقية.
 +
 
 +
=== [[Design Patterns/builder|نمط الباني Builder]] ===
 +
نمط الباني (Builder) هو نمط تصميم إنشائي يسمح لك ببناء كائنات معقدة خطوة خطوة، كما يمكنك من إنتاج أنواعًا وتمثيلات (representations) مختلفة من الكائن باستخدام نفس شيفرة البناء (Construction code).
 +
 
 +
===[[Design Patterns/prototype|نمط النموذج الأولي Prototype]] ===
 +
نمط النموذج الأولي (prototype) هو نمط تصميم إنشائي يسمح لك بنسخ الكائنات الموجودة حاليًا دون جعل شيفرتك تعتمد على فئات تلك الكائنات.
 +
 
 
===[[Design Patterns/singleton|نمط المفردة Singleton]]===
 
===[[Design Patterns/singleton|نمط المفردة Singleton]]===
 +
نمط المفردة (Singleton) هو نمط تصميم إنشائي يضمن وجود نسخة واحدة فقط من فئة ما في نفس الوقت الذي يوفر فيه نقطة وصول عامة لهذه النسخة.
 +
 
==أنماط التصميم الهيكلية==
 
==أنماط التصميم الهيكلية==
 
===[[Design Patterns/adapter|نمط المحوِّل Adapter]]===
 
===[[Design Patterns/adapter|نمط المحوِّل Adapter]]===
 +
نمط المحوِّل هو نمط تصميم هيكلي يسمح للكائنات ذات الواجهات غير المتوافقة بالتعاون.
 +
 
===[[Design Patterns/bridge|نمط الجسر Bridge]]===
 
===[[Design Patterns/bridge|نمط الجسر Bridge]]===
 +
نمط الجسر هو نمط تصميم هيكلي يسمح لك بتقسيم فئة كبيرة أو مجموعة فئات مرتبطة ببعضها إلى تشكيلين هرميين منفصلين -نظري وتطبيقي-، ومن ثم يمكن تطويرهما بشكل مستقل عن بعضهما.
 +
 
===[[Design Patterns/composite|نمط المُركَّب Composite]]===
 
===[[Design Patterns/composite|نمط المُركَّب Composite]]===
 +
نمط المركَّب هو نمط تصميم هيكلي يسمح لك بتركيب كائنات في هياكل شجرية لتعاملها على أنها وحدة واحدة أو كائن واحد.
 +
 
===[[Design Patterns/decorator|نمط المُزخرِف Decorator]]===
 
===[[Design Patterns/decorator|نمط المُزخرِف Decorator]]===
 +
نمط المزخرِف هو نمط تصميم هيكلي يضيف سلوكيات جديدة إلى الكائنات بوضعها داخل كائنات تغليف خاصة تحتوي تلك السلوكيات.
 +
 
===[[Design Patterns/facade|نمط الواجهة Facade]]===
 
===[[Design Patterns/facade|نمط الواجهة Facade]]===
 +
نمط الواجهة هو نمط تصميم هيكلي يوفر واجهة مبسطة لمكتبة ما أو إطار عمل أو أي تركيبة معقدة من الفئات.
 +
 
===[[Design Patterns/flyweight|نمط وزن الذبابة Flyweight]]===
 
===[[Design Patterns/flyweight|نمط وزن الذبابة Flyweight]]===
 +
نمط وزن الذبابة (Flyweight) هو نمط تصميم هيكلي يسمح لك بزيادة عدد الكائنات التي يمكنك إضافتها داخل نفس المساحة المتاحة لديك من الذاكرة العشوائية RAM، من خلال مشاركة أجزاء مشتركة بين عدة كائنات بدلًا من إبقاء نسخة من البيانات كلها داخل كل كائن.
 +
 
===[[Design Patterns/proxy|نمط الوكيل Proxy]]===
 
===[[Design Patterns/proxy|نمط الوكيل Proxy]]===
 +
نمط الوكيل (Proxy) هو نمط تصميم إنشائي يسمح لك بتوفير بديل لكائن موجود لديك، ويتحكم في الوصول إلى الكائن الأصلي، مما يمكنك من تنفيذ إجراءات قبل أو بعد وصول الطلب إلى الكائن الأصلي.
 +
 
==أنماط التصميم السلوكية==
 
==أنماط التصميم السلوكية==
===[[Design Patterns/chain of responsibility|نمط سلسلة المسؤولية]]===
+
===[[Design Patterns/chain of responsibility|نمط سلسلة المسؤولية Chain of Responsibility]]===
===[[Design Patterns/command|نمط الأمر]]===
+
نمط سلسلة المسؤولية (Chain of Responsibility) هو نمط تصميم سلوكي (Behavioral) يسمح لك بتمرير طلبات على سلسلة من المداوِلات (Handlers)، ويقرر كل مداوِل عند استلام الطلب أن يعالجه أو يمرره إلى المداوِل التالي في السلسلة.
 +
 
 +
===[[Design Patterns/command|نمط الأمر Command]] ===
 +
نمط الأمر هو نمط تصميم سلوكي (Behavioral Design Pattern) يحول الطلب إلى كائن مستقل بذاته بداخله كل بيانات الطلب، ويسمح لك هذا التحول بإدخال طلبات مختلفة كمعامِلات (Parameters) داخل الأساليب، وتأخير تنفيذ الطلب أو وضعه في صف انتظار، ودعم العمليات غير الممكنة (Undoable).
 +
 
 
===[[Design Patterns/iterator|نمط المكرِّر Iterator]]===
 
===[[Design Patterns/iterator|نمط المكرِّر Iterator]]===
 +
نمط المكرِّر هو نمط تصميم سلوكي يسمح لك بتخطي عناصر من مجموعة (Collection) دون كشف التمثيل التحتي (underlying representation) لها (قائمة، مكدَّس، شجرة، إلخ).
 +
 
===[[Design Patterns/mediator|نمط الوسيط Mediator]]===
 
===[[Design Patterns/mediator|نمط الوسيط Mediator]]===
 +
نمط الوسيط هو نمط تصميم سلوكي يسمح لك بتقليل الاعتماديات الفوضوية بين الكائنات، إذ يقيد عمليات التواصل المباشرة بينها ويجبرها على التواصل من خلال كائن وسيط.
 +
 
===[[Design Patterns/memento|نمط التذكرة Memento]]===
 
===[[Design Patterns/memento|نمط التذكرة Memento]]===
 +
نمط التذكرة هو نمط تصميم سلوكي يسمح لك بحفظ واسترجاع الحالة السابقة لكائن ما دون كشف تفاصيل استخداماته أو تطبيقاته (implementations).
 +
 
===[[Design Patterns/observer|نمط المراقِب Observer]]===
 
===[[Design Patterns/observer|نمط المراقِب Observer]]===
 +
نمط المراقب هو نمط تصميم سلوكي يسمح لك بتحديد آلية اشتراك لتنبيه عدة كائنات بأي أحداث تقع للكائن الذي يراقبونه.
 +
 
===[[Design Patterns/state|نمط الحالة State]]===
 
===[[Design Patterns/state|نمط الحالة State]]===
 +
نمط الحالة هو نمط تصميم سلوكي يسمح للكائن بتغيير سلوكه حين تتغير حالته الداخلية، ويبدو حينها كأن الكائن قد غيّر فئته.
 +
 +
=== [[Design Patterns/strategy|نمط الخطة Strategy]] ===
 +
نمط الخطة هو نمط تصميم سلوكي يسمح لك بتحديد عائلة من الخوارزميات ووضع كل واحدة منها داخل فئة منفصلة، ومن ثم جعل كائناتها تقبل التبادل (interchangeable).
 +
 +
=== [[Design Patterns/template method|نمط أسلوب القالب Template Method]] ===
 +
نمط أسلوب القالب هو نمط تصميم سلوكي يحدد هيكل الخوارزمية في الفئة الرئيسية (superclass) لكنه في نفس الوقت يسمح للفئات الفرعية بتغيير خطوات بعينها من تلك الخوارزمية دون تغيير هيكلها.
 +
 +
=== [[Design Patterns/visitor|نمط الزائر Visitor]] ===
 +
نمط الزائر هو نمط تصميم سلوكي يسمح لك بفصل الخوارزميات من الكائنات التي تشغّلها.
 
[[تصنيف:Design Patterns]]
 
[[تصنيف:Design Patterns]]

مراجعة 13:56، 4 مارس 2020

أنماط التصميم (Design Patterns) هي أساليب نموذجية تحل المشاكل التي تتكرر كثيرًا في تصميم البرمجيات، ويمكن تشبيهها بالمخططات التي تستخدمها -وتُعدَّلها أيضًا- من أجل إصلاح مشكلة بعينها في شيفرتك.

مقدمة إلى أنماط التصميم

ما هي أنماط التصميم

وصف مختصر لأنماط التصميم ونشأتها وتصانيفها وبعض الانتقادات التي وُجهت إليها.

أنماط التصميم الإنشائية Creational Design Patterns

نمط أسلوب المصنع Factory Method

أسلوب المصنع هو نمط تصميم إنشائي (creational) يوفر واجهة لإنشاء الكائنات (objects) داخل فئات رئيسية (superclasses) لكنها تسمح في نفس الوقت للفئات الثانوية (subclasses) بتغيير نوع تلك الكائنات التي سيتم إنشاؤها.

نمط المصنع المجرد Abstract Factory

نمط المصنع المجرَّد هو نمط تصميم إنشائي يسمح لك بإنتاج عائلات من الكائنات المرتبطة ببعضها دون تحديد فئاتهم الحقيقية.

نمط الباني Builder

نمط الباني (Builder) هو نمط تصميم إنشائي يسمح لك ببناء كائنات معقدة خطوة خطوة، كما يمكنك من إنتاج أنواعًا وتمثيلات (representations) مختلفة من الكائن باستخدام نفس شيفرة البناء (Construction code).

نمط النموذج الأولي Prototype

نمط النموذج الأولي (prototype) هو نمط تصميم إنشائي يسمح لك بنسخ الكائنات الموجودة حاليًا دون جعل شيفرتك تعتمد على فئات تلك الكائنات.

نمط المفردة Singleton

نمط المفردة (Singleton) هو نمط تصميم إنشائي يضمن وجود نسخة واحدة فقط من فئة ما في نفس الوقت الذي يوفر فيه نقطة وصول عامة لهذه النسخة.

أنماط التصميم الهيكلية

نمط المحوِّل Adapter

نمط المحوِّل هو نمط تصميم هيكلي يسمح للكائنات ذات الواجهات غير المتوافقة بالتعاون.

نمط الجسر Bridge

نمط الجسر هو نمط تصميم هيكلي يسمح لك بتقسيم فئة كبيرة أو مجموعة فئات مرتبطة ببعضها إلى تشكيلين هرميين منفصلين -نظري وتطبيقي-، ومن ثم يمكن تطويرهما بشكل مستقل عن بعضهما.

نمط المُركَّب Composite

نمط المركَّب هو نمط تصميم هيكلي يسمح لك بتركيب كائنات في هياكل شجرية لتعاملها على أنها وحدة واحدة أو كائن واحد.

نمط المُزخرِف Decorator

نمط المزخرِف هو نمط تصميم هيكلي يضيف سلوكيات جديدة إلى الكائنات بوضعها داخل كائنات تغليف خاصة تحتوي تلك السلوكيات.

نمط الواجهة Facade

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

نمط وزن الذبابة Flyweight

نمط وزن الذبابة (Flyweight) هو نمط تصميم هيكلي يسمح لك بزيادة عدد الكائنات التي يمكنك إضافتها داخل نفس المساحة المتاحة لديك من الذاكرة العشوائية RAM، من خلال مشاركة أجزاء مشتركة بين عدة كائنات بدلًا من إبقاء نسخة من البيانات كلها داخل كل كائن.

نمط الوكيل Proxy

نمط الوكيل (Proxy) هو نمط تصميم إنشائي يسمح لك بتوفير بديل لكائن موجود لديك، ويتحكم في الوصول إلى الكائن الأصلي، مما يمكنك من تنفيذ إجراءات قبل أو بعد وصول الطلب إلى الكائن الأصلي.

أنماط التصميم السلوكية

نمط سلسلة المسؤولية Chain of Responsibility

نمط سلسلة المسؤولية (Chain of Responsibility) هو نمط تصميم سلوكي (Behavioral) يسمح لك بتمرير طلبات على سلسلة من المداوِلات (Handlers)، ويقرر كل مداوِل عند استلام الطلب أن يعالجه أو يمرره إلى المداوِل التالي في السلسلة.

نمط الأمر Command

نمط الأمر هو نمط تصميم سلوكي (Behavioral Design Pattern) يحول الطلب إلى كائن مستقل بذاته بداخله كل بيانات الطلب، ويسمح لك هذا التحول بإدخال طلبات مختلفة كمعامِلات (Parameters) داخل الأساليب، وتأخير تنفيذ الطلب أو وضعه في صف انتظار، ودعم العمليات غير الممكنة (Undoable).

نمط المكرِّر Iterator

نمط المكرِّر هو نمط تصميم سلوكي يسمح لك بتخطي عناصر من مجموعة (Collection) دون كشف التمثيل التحتي (underlying representation) لها (قائمة، مكدَّس، شجرة، إلخ).

نمط الوسيط Mediator

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

نمط التذكرة Memento

نمط التذكرة هو نمط تصميم سلوكي يسمح لك بحفظ واسترجاع الحالة السابقة لكائن ما دون كشف تفاصيل استخداماته أو تطبيقاته (implementations).

نمط المراقِب Observer

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

نمط الحالة State

نمط الحالة هو نمط تصميم سلوكي يسمح للكائن بتغيير سلوكه حين تتغير حالته الداخلية، ويبدو حينها كأن الكائن قد غيّر فئته.

نمط الخطة Strategy

نمط الخطة هو نمط تصميم سلوكي يسمح لك بتحديد عائلة من الخوارزميات ووضع كل واحدة منها داخل فئة منفصلة، ومن ثم جعل كائناتها تقبل التبادل (interchangeable).

نمط أسلوب القالب Template Method

نمط أسلوب القالب هو نمط تصميم سلوكي يحدد هيكل الخوارزمية في الفئة الرئيسية (superclass) لكنه في نفس الوقت يسمح للفئات الفرعية بتغيير خطوات بعينها من تلك الخوارزمية دون تغيير هيكلها.

نمط الزائر Visitor

نمط الزائر هو نمط تصميم سلوكي يسمح لك بفصل الخوارزميات من الكائنات التي تشغّلها.