يعد التصميم منخفض المستوى (LLD) مرحلة حاسمة في تطوير البرمجيات التي تسد الفجوة بين التصميم عالي المستوى والتنفيذ الفعلي. بينما يركز التصميم عالي المستوى على المخططات المعمارية، يتعامل LLD مع كيفية تنفيذ كل مكون أو فئة أو وظيفة لتلبية متطلبات النظام الشاملة.
بعبارات أبسط، يتضمن LLD تصميم الفئات والأساليب والواجهات والتفاعلات بينها، مما يضمن أن التعليمات البرمجية فعالة وقابلة للصيانة وقابلة للتطوير. إنها مهارة أساسية لمهندسي البرمجيات، خاصة عند بناء الأنظمة التي تحتاج إلى أن تكون قوية وقابلة لإعادة الاستخدام وسهلة التعديل بمرور الوقت.
ستقدم لك هذه المدونة المفاهيم والمبادئ والتقنيات الأساسية المستخدمة في التصميم منخفض المستوى وستوضح كيف يمكن أن تساعدك على كتابة تعليمات برمجية أفضل وأكثر قابلية للصيانة.
السؤال الأول الذي يتبادر إلى أذهاننا هو:
ما سبب أهمية التصميم منخفض المستوى؟
لسد الفجوة بين مفاهيم LLD والتعليمات البرمجية الحقيقية، دعنا نقسم عملية تصميم مخطط منخفض المستوى من خلال الخطوات التالية:
الخطوة 1: المبادئ الموجهة للكائنات
الخطوة 2: المبادئ الصلبة
الخطوة 3: أنماط التصميم
يجب أن يكون هناك 4 ركائز لمفهوم البرمجة الشيئية للبدء في تعلم التصميم منخفض المستوى. لقد قمت بالفعل بتغطية هذا المفهوم في مدونة مختصرة للدفع
S: مبدأ المسؤولية الفردية (SRP)
مثال: تخيل فئة تتعامل مع كل من مصادقة المستخدم والتسجيل. إذا كنا بحاجة إلى تغيير كيفية عمل التسجيل، فسوف ينتهي بنا الأمر إلى تعديل فئة المصادقة أيضًا. وهذا ينتهك برنامج SRP. بدلاً من ذلك، يجب أن يكون لدينا فئتين منفصلتين: واحدة لمصادقة المستخدم وأخرى للتسجيل، بحيث تتحمل كل فئة مسؤولية واحدة.
O: المبدأ المفتوح/المغلق (OCP)
مثال: فكر في نظام معالجة الدفع الذي يتعامل مع الدفعات عبر بطاقات الائتمان. إذا كنت بحاجة إلى إضافة دعم لـ PayPal، بدلاً من تعديل الكود الحالي، فيجب عليك توسيعه عن طريق إضافة فئة جديدة لمدفوعات PayPal. وهذا يضمن بقاء النظام الحالي مستقرًا مع السماح بإضافة وظائف جديدة.
L: مبدأ استبدال ليسكوف (LSP)
مثال: إذا كان لدينا فئة Bird تحتوي على طريقة fly()، وقمنا بإنشاء فئة فرعية Penguin، والتي لا يمكنها الطيران، فإن هذا ينتهك LSP. يجب ألا ترث فئة Penguin fly() لأنها تغير السلوك المتوقع. بدلاً من ذلك، يجب إعادة هيكلة فئة الطيور للتعامل مع الطيور التي يمكنها الطيران بشكل مختلف والتي لا يمكنها الطيران.
I: مبدأ فصل الواجهة (ISP)
مثال: لنفترض أن لدينا واجهة Animal مع الأساليب fly() وswim() وwalk(). سيتم إجبار فئة Dog التي تنفذ Animal على تعريف fly()، وهو ما لا تحتاجه. للامتثال لمزود خدمة الإنترنت، يجب علينا تقسيم واجهة الحيوان إلى واجهات أصغر مثل Flyable وSwimmable وWalable لتجنب فرض أساليب غير ذات صلة على الفئات
د: مبدأ انعكاس التبعية (DIP)
مثال: في أحد تطبيقات التجارة الإلكترونية، إذا كانت عملية الدفع (وحدة عالية المستوى) تعتمد بشكل مباشر على بوابة دفع محددة مثل PayPal (وحدة ذات مستوى منخفض)، فإن تغيير بوابة الدفع يتطلب تعديل عملية الدفع. من خلال تقديم فكرة مجردة، مثل واجهة PaymentProcessor، يمكن أن تعمل عملية الدفع مع أي طريقة دفع دون الحاجة إلى معرفة تفاصيل PayPal أو أي خدمة أخرى.
تعد أنماط التصميم بمثابة حلول مثبتة للمشاكل الشائعة التي تنشأ في تصميم البرامج. إنها أفضل الممارسات التي يمكن للمطورين اتباعها لحل مشكلات التصميم المحددة بكفاءة ومنهجية. بدلاً من إعادة اختراع العجلة، توفر أنماط التصميم منهجًا قياسيًا لحل المشكلات المتكررة.
يمكن تصنيف أنماط التصميم إلى ثلاثة أنواع:
الأنماط الإبداعية: التعامل مع إنشاء الكائنات
الأنماط الهيكلية: التعامل مع تكوين الكائنات وعلاقاتها
الأنماط السلوكية: التعامل مع التفاعل مع الأشياء والمسؤولية
الآن بعد أن وضعنا الأساس من خلال استكشاف مبادئ SOLID وقدمنا المشهد الواسع لأنماط التصميم، نحن مستعدون للتعمق أكثر! في السلسلة القادمة، سأقوم بتفصيل كل نمط تصميم بأمثلة عملية وسيناريوهات من العالم الحقيقي. سواء كنت بدأت للتو رحلة التصميم الخاصة بك أو تتطلع إلى صقل مهاراتك، فإن هذه الأنماط ستساعدك على كتابة تعليمات برمجية أكثر وضوحًا وقابلية للتطوير. ترقبوا المدونة التالية، حيث نكشف عن نمط التصميم الأول - خطوة بخطوة!
إذا وصلت إلى هذا الحد، فلا تنس الضغط على إعجاب ❤️ وإسقاط تعليق أدناه يتضمن أي أسئلة أو أفكار. تعليقاتك تعني لي كل شيء، وأود أن أسمع منك!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3