المبدأ المفتوح المغلقة هو مبدأ التصميم الأساسي في عالم جافا. يوجهنا كيفية بناء نظام مستقر ومرن.
تعريف:
يجب أن يكون كيان البرنامج مثل الفئات والوحدات النمطية والوظائف مفتوحًا للامتدادات وإغلاق التعديلات.
يجب أن تكون كيانات البرمجيات مثل الفئات والوحدات النمطية والوظائف مفتوحة للتمديد ولكنها مغلقة للتعديلات.
معنى مبدأ الافتتاح والإغلاق هو أن كيان البرنامج يجب أن يحقق تغييرات من خلال الامتدادات ، بدلاً من تعديل التعليمات البرمجية الحالية.
يتضمن كيان البرنامج الأجزاء التالية:
مبدأ الفتح والإغلاق هو مبدأ للقيود على تصميم التطوير الحالي المصمم للأشياء المستقبلية لكيان البرنامج.
ملاحظة: إن مبدأ الفتح والإغلاق مفتوح للإضافات ولا يعني التعديلات الختامية أنه لا توجد تعديلات. يجب أن تقترن التغييرات في الوحدات النمطية ذات المستوى المنخفض بوحدات عالية المستوى ، وإلا فإنها ستكون مقتطف رمز معزول ولا معنى له.
أنواع التغيير:
يجب أن يكون المسار الأساسي للمشروع على النحو التالي: تطوير المشروع ، وإعادة الإعمار ، والاختبار ، والإنتاج ، والتشغيل والصيانة. يمكن لإعادة الإعمار تعديل التصميم والرمز الأصليين ، ويمكن للتشغيل والصيانة تقليل تعديل الكود الأصلي ، والحفاظ على نقاء الكود التاريخي ، وتحسين استقرار النظام.
أهمية مبدأ الفتح والإغلاق:
1. تأثير مبدأ الافتتاح والإغلاق على الاختبارات. مبدأ الافتتاح والإغلاق هو الحفاظ على رمز الاختبار الأصلي لا يزال يعمل بشكل طبيعي. نحتاج فقط إلى اختبار الكود الممتد.
2. مبدأ الفتح والإغلاق يمكن أن يحسن قابلية إعادة الاستخدام. في التصميم الموجهة للكائنات ، يتكون كل المنطق من المنطق الذري ، بدلاً من تنفيذ منطق الأعمال بشكل مستقل في الفصل. فقط بهذه الطريقة يمكن إعادة استخدام الرمز. كلما كانت الحبيبات أصغر ، زادت إمكانية إعادة استخدامها.
3. يمكن لمبدأ الافتتاح والإغلاق تحسين متطلبات التطوير الموجهة نحو الكائن.
كيفية استخدام مبدأ الافتتاح والإغلاق:
1. القيود المجردة أولاً ، تمديد التمديد من خلال واجهة أو قيود فئة مجردة ، ولا تسمح بالأساليب العامة غير الموجودة في واجهة أو فئة مجردة ؛
ثانياً ، حاول استخدام واجهات أو فئات مجردة لأنواع المعلمات والكائنات المرجعية ، بدلاً من فئات التنفيذ ؛
ثالثًا ، حاول أن تظل مستقرة قدر الإمكان ، وبمجرد تحديدها ، لا يُسمح بالتعديلات.
2. بيانات التحكم في وحدة التحكم في البيانات الوصفية هي البيانات المستخدمة لوصف البيئة والبيانات. في شروط الرجل العادي ، فهو معلمات التكوين. يمكن الحصول على المعلمات من الملفات أو من قواعد البيانات.
حاويات الربيع هي مثال نموذجي لسلوك وحدات التحكم في البيانات الوصفية ، والانقراض النهائي هو انعكاس السيطرة
3. صياغة ميثاق المشروع. في الفريق ، من المهم للغاية إنشاء ميثاق للمشروع لأن الميثاق يحدد الاتفاقات التي يجب على جميع الموظفين الالتزام بها. بالنسبة للمشاريع ، تكون الاتفاقيات أفضل من التكوين.
4. تغييرات التغليف لها معنيان:
أولاً ، قم بتغليف التغييرات نفسها في واجهة أو فئة مجردة ؛
ثانياً ، قم بتغليف تغييرات مختلفة في واجهات مختلفة أو فئات مجردة ، ويجب ألا يكون هناك تغييران مختلفان في نفس الواجهة أو الفئة المجردة.
مثال
فيما يلي مثال ، أولاً وقبل كل شيء ، مثال سيء:
class graphiceditor {public void drawshape (Shape S) {if (s.m_type == 1) drawRectangle (s) ؛ آخر if (s.m_type == 2) drawCircle (s) ؛ } public void drawCircle (circle r) {....} public void drawRectangle (strugle r) {....}} class {int m_type ؛ } فئة مستطيل يمتد الشكل {rectangle () {super.m_type = 1 ؛ }} Class Circle تمتد الشكل {circle () {super.m_type = 2 ؛ }}عندما نريد توسيع شكل ما ، نحتاج إلى فهم فئة الرسوم البيانية أولاً ، ثم إضافة نوع جديد في DrawShape ، ثم إضافة وظيفة. هنا هو الكود المحسن:
class graphiceditor {public void drawshape (Shape S) {S.Draw () ؛ }} شكل الفئة {التجريدية void draw () ؛ } فئة المستطيل يمتد الشكل {public void draw () {// ارسم المستطيل}}
ليست هناك حاجة لفهم منطق الرسم ، ووضع التنفيذ المحدد في فئة فرعية.
تلخيص:
1. الامتثال لمبادئ الفتح والإغلاق يمكن أن يحسن قابلية التوسع وصيانة البرامج.
2. معظم أنماط التصميم ومبادئ التصميم تدور حول تحقيق مبدأ الافتتاح والإغلاق.