تفضيل الواجهات كأنواع مرجعية:
في حالة وجود واجهة مناسبة، يجب عليك الإشارة إلى الكائنات من خلالها بدلاً من الفئة المحددة.
ينطبق هذا على المعلمات وقيم الإرجاع والمتغيرات والحقول.
المرونة عند استخدام الواجهات:
يتيح لك استخدام الواجهات تغيير التنفيذ دون التأثير على الكود.
مثال: التغيير من LinkedHashSet إلى HashSet أو TreeSet، فقط قم بتغيير المُنشئ.
متى لا تستخدم الواجهات:
وظائف خاصة بالتنفيذ:
إذا كان التنفيذ يقدم شيئًا غير مطلوب من قبل الواجهة (على سبيل المثال، يضمن LinkedHashSet ترتيب التكرار، لكن HashSet لا يفعل ذلك).
بدون واجهة مناسبة:
بعض الفئات مثل String أو BigInteger لا تحتوي على واجهات مكافئة ويجب استخدامها مباشرة.
الأطر القائمة على الفصل:
مثال: تتم الإشارة إلى OutputStream في حزمة java.io من خلال فئة مجردة، وليس واجهة.
طرق التنفيذ الخاصة:
مثال: تقوم PriorityQueue بتنفيذ قائمة الانتظار، ولكن لديها طريقة comparator() غير موجودة في قائمة الانتظار. استخدم الفصل فقط إذا كنت بحاجة إلى هذه الطريقة الإضافية.
فائدة:
يؤدي استخدام الواجهات إلى جعل البرنامج أكثر مرونة ونمطيًا، مما يسمح لك بتغيير عمليات التنفيذ بسهولة دون كسر التعليمات البرمجية الموجودة.
أمثلة على الكود
مثال جيد: استخدم الواجهة كنوع
Sets = new LinkedHashSet();
مثال سيء: استخدام الفئة الملموسة كنوع
LinkedHashSets = new LinkedHashSet();
المرونة: تغيير التنفيذ دون التأثير على الكود
Sets = new TreeSet();
مثال على استخدام فئة نهائية مثل String
String str = "Hello";
مثال على استخدام فئة أساسية لإطار العمل
OutputStream output = new FileOutputStream("file.txt");
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3