كم عدد مبادئ تصميم الأنماط بالضبط
Categories:
تم تلخيص مبادئ تصميم الأنماط في البداية إلى 5 فقط، أي SOLID:
مبدأ المسؤولية الواحدة (Single Responsibility Principle, SRP):يجب أن يكون للصنف سبب واحد فقط للتغيير، أي أن للصنف مسؤولية واحدة فقط.مبدأ الفتح/الإغلاق (Open/Closed Principle, OCP):يجب أن تكون الكيانات البرمجية (الصنف، الوحدة، الدالة وغيرها) مفتوحة للتوسع ومغلقة للتعديل، أي يجب تحقيق التغيير من خلال التوسعة وليس من خلال تعديل الكود الموجود.مبدأ استبدال ليسبكوف (Liskov Substitution Principle, LSP):يجب أن تكون الأصناف الفرعية قادرة على استبدال أصنافها الأساسية، أي يجب أن تكون الأصنف المشتقة قادرة على استبدال أصنافها الأساسية دون التأثير على صحة البرنامج.مبدأ عزل الواجهة (Interface Segregation Principle, ISP):لا ينبغي إجبار العميل على الاعتماد على الواجهات التي لا يستخدمها. ينبغي تقسيم الواجهة الكبيرة إلى واجهات أصغر وأكثر تحديدًا، بحيث يحتاج العميل فقط إلى معرفة الطرق التي يحتاج إلى استخدامها.مبدأ انعكاس الاعتماد (Dependency Inversion Principle, DIP):لا ينبغي أن تعتمد الوحدات العليا على الوحدات الدنيا، بل يجب أن تعتمد كلاهما على المفاهيم المجردة. لا ينبغي أن تعتمد المفاهيم المجردة على تفاصيل التنفيذ، بل يجب أن تعتمد تفاصيل التنفيذ على المفاهيم المجردة.
لاحقًا، أُضيف مبدأان إضافيان، هذه القواعد الإضافية اللاحقة أكثر تحديدًا وتوجيهية مقارنة بالسابقة. يمكننا أن نرى من تفسير المبادئ أن SOLID تصف “ما يجب فعله”، أما القواعد المضافة لاحقًا تصف “ما يجب إعطاء الأولوية له/ما هو الأفضل فعله”.
مبدأ إعادة استخدام التركيب/التجميع (Composition/Aggregation Reuse Principle, CARP):يجب إعطاء الأولوية لاستخدام تركيب الكائنات (التركيب) والتجميع بدلاً من الوراثة لتحقيق إعادة استخدام الكود.قانون ديمتر (Law of Demeter, LoD):يجب أن يكون للكائن معرفة بأقل قدر ممكن بالكائنات الأخرى، أي يجب أن يعرف الكائن أقل قدر ممكن من المعلومات حول البنية الداخلية وتفاصيل تنفيذ الكائنات الأخرى.
بجانب المبادئ الشائعة المذكورة أعلاه، هناك بعض مبادئ التصميم الأخرى، على الرغم من أنها ليست معروفة على نطاق واسع مثل تلك المذكورة سابقًا، إلا أنها تظل ذات أهمية كبيرة في توجيه تصميم وبنية البرمجيات. هذه القواعد المضافة لاحقًا، تبدو نوعًا ما كإضافة زائدة، على الأقل أعتقد أنها ليست غير بديهية ولا تحتاج إلى تفكير عميق.
مبدأ أقل معرفة (Principle of Least Knowledge, PoLK):يُعرف أيضًا بتمديد لقانون ديمتر، ويدعي أن الكائن يجب أن يعرف أقل قدر ممكن من المعلومات عن الكائنات الأخرى. يعود أصل هذا المبدأ إلى عام 1987 عندما قدمته باتريشيا لاوغو (Patricia Lago) وكوس فيسر (Koos Visser) باسم “قانون أقل اتصال”.مبدأ الاعتماد المستقر (Stable Dependencies Principle, SDP):يقترح هذا المبدأ أنه يجب أن يضمن تصميم البرمجيات أن المكونات المستقرة لا تعتمد على المكونات غير المستقرة، أي أن المكونات ذات الاستقرار العالي يجب أن تعتمد أقل على المكونات ذات الاستقرار المنخفض. تأتي فكرة هذا المبدأ من الدراسة المتعمقة للعلاقات بين المكونات في نظم البرمجيات.مبدأ التجريد المستقر (Stable Abstraction Principle, SAP):يتماشى مع مبدأ الاعتماد المستقر، ويوجه مطابقة التجريد مع الاستقرار، أي أن المكونات المستقرة يجب أن تكون مجردة، أما المكونات غير المستقرة فيجب أن تكون محددة. يساعد هذا المبدأ في ضمان استقرار ومرونة نظام البرمجيات.