مقدمة في أنماط التصميم
جزء من قسم Object Oriented Programming في رحلة Python على Coddy — الدرس 44 من 64.
أنماط التصميم هي حلول قابلة لإعادة الاستخدام للمشكلات الشائعة في تصميم البرمجيات. إنها تشبه المخططات التي يمكنك تخصيصها لحل مشكلات التصميم المتكررة في الكود الخاص بك.
فكر في أنماط التصميم (design patterns) كقوالب مجربة يستخدمها المطورون ذوو الخبرة لحل مشكلات مماثلة. عندما تقول "لقد استخدمت نمط Singleton"، سيفهم المطورون الآخرون على الفور بنية الكود الخاص بك.
إليك مثال بسيط يوضح سبب أهمية الأنماط:
# بدون نمط - نهج فوضوي
class DatabaseConnection:
def __init__(self):
self.connection = "Connected to database"
# مشكلة: تم إنشاء اتصالات متعددة
db1 = DatabaseConnection()
db2 = DatabaseConnection() # مهدر للموارد - ينشئ اتصالاً آخرباستخدام نمط التصميم، ستحصل على حل أفضل:
# مع نمط Singleton - نهج محكم
class DatabaseConnection:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
cls._instance.connection = "Connected to database"
return cls._instance
# الآن يوجد اتصال واحد فقط
db1 = DatabaseConnection()
db2 = DatabaseConnection()
print(db1 is db2) # True - نفس الكائنلماذا نستخدم أنماط التصميم:
- قابليّة إعادة الاستخدام: حلول يمكنك تطبيقها على مشكلات مماثلة
- التواصل: لغة مشتركة بين المطورين
- أفضل الممارسات: حلول مجربة بمرور الوقت
- قابلية الصيانة: كود منظم وجيد الهيكلة
ما ستتعلمه في هذه السلسلة:
الأنماط الإنشائية (Creational Patterns) (كيفية إنشاء الكائنات):
- نمط المفرد (Singleton Pattern) - نسخة واحدة فقط
- نمط المصنع (Factory Pattern) - إنشاء كائنات دون تحديد الفئة (class) الدقيقة
الأنماط الهيكلية (كيفية تكوين الكائنات):
- نمط المحول (Adapter Pattern) - جعل الواجهات غير المتوافقة تعمل معاً
- نمط المزين (Decorator Pattern) - إضافة وظائف دون تغيير الهيكل
الأنماط السلوكية (كيفية تفاعل الكائنات):
- نمط المراقب (Observer Pattern) - إخطار كائنات متعددة بالتغييرات
- نمط الاستراتيجية (Strategy Pattern) - تبديل الخوارزميات ديناميكيًا
- نمط الأمر (Command Pattern) - تغليف الطلبات ككائنات
سيتناول كل درس من دروس الأنماط ما يلي:
- ما هي المشكلة التي يحلها
- كيفية تنفيذه في لغة Python
- متى يجب استخدامه
- أمثلة من الواقع العملي
نقطة رئيسية: أنماط التصميم هي حلول مجربة لمشاكل البرمجة الشائعة. فهي توفر مفردات مشتركة وأفضل الممارسات التي تجعل الكود الخاص بك أكثر قابلية للصيانة ومرونة وأسهل في الفهم. ستتعلم 7 أنماط أساسية يجب أن يعرفها كل مطور Python.
ورقة مرجعية
أنماط التصميم هي حلول قابلة لإعادة الاستخدام لمشاكل شائعة في تصميم البرمجيات. فهي توفر قوالب مجربة لحل مشاكل التصميم المتكررة.
فوائد أنماط التصميم:
- قابلية إعادة الاستخدام: حلول يمكنك تطبيقها على مشاكل مماثلة
- التواصل: لغة مشتركة بين المطورين
- أفضل الممارسات: حلول تم اختبارها بمرور الوقت
- قابلية الصيانة: كود منظم ومنسق بشكل جيد
مثال - نمط Singleton:
# بدون النمط - ينشئ مثيلات متعددة
class DatabaseConnection:
def __init__(self):
self.connection = "Connected to database"
# مع نمط Singleton - يضمن وجود مثيل واحد فقط
class DatabaseConnection:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
cls._instance.connection = "Connected to database"
return cls._instanceفئات الأنماط:
- الأنماط الإنشائية (كيفية إنشاء الكائنات): Singleton, Factory
- الأنماط الهيكلية (كيفية تكوين الكائنات): Adapter, Decorator
- الأنماط السلوكية (كيفية تفاعل الكائنات): Observer, Strategy, Command
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1أساسيات OOP
الملفات الخارجيةمقدمة في OOPClasses مقابل Objectsمعامل selfMethodsAttributesدالة البناء (__init__)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسيةدالة ()superإعادة تعريف الدوال (Method Overriding)الوراثة المتعددةترتيب استدعاء الدوال (Method Resolution Order)مراجعة - هيكلية الموظفين5تعدد الأشكال
مراجعة إعادة تعريف الدوالمفهوم Duck Typingالأصناف والدوال المجردةتصميم الواجهاتملخص - حاسبة الأشكال