الغرض المحير من ثوابت الواجهة
في Java، من الممكن الإعلان عن الحقول داخل الواجهة، مما يجعلها عامة وثابتة ضمنيًا أخير. وقد أثار هذا تساؤلات بين المطورين.
مصيدة الواجهة الثابتة خلافًا للتوقعات، فإن تحديد الثوابت داخل الواجهة يعتبر "نمطًا ثابتًا للواجهة". كما هو مذكور في Java الفعالة بقلم Joshua Bloch، فإن هذه الممارسة تكشف دون داع تفاصيل التنفيذ للمستخدمين وتعيق تعديلات التعليمات البرمجية المستقبلية. علاوة على ذلك، فهو يربط الفئات الفرعية بالواجهة الثابتة.
شذوذ النظام الأساسي
على الرغم من هذا التحذير، يمكن العثور على العديد من الواجهات الثابتة في مكتبة Java القياسية، مثل java. io.ObjectStreamConstants. لا ينبغي أن تكون هذه الشذوذات بمثابة أمثلة بل تناقضات يجب تجنبها.
الأساليب البديلة
لمنع المخاطر المرتبطة بالواجهات الثابتة، فكر في استخدام فئة أدوات مساعدة مخصصة مع منشئون خاصون وحقول نهائية ثابتة.
ثوابت الطبقة النهائية العامة { الثوابت الخاصة () {} PI النهائي الثابت العام = 3.14159؛ PLANCK_CONSTANT = 6.62606896e-34؛
public final class Constants {
private Constants() {}
public static final double PI = 3.14159;
public static final double PLANCK_CONSTANT = 6.62606896e-34;
}
استيراد الثوابت الثابتة.PLANCK_CONSTANT; استيراد الثوابت الثابتة.PI؛ حسابات الطبقة العامة { public double getReducedPlanckConstant() { إرجاع PLANCK_CONSTANT / (2 * PI)؛ }
وبالتالي، في حين أن ثوابت الواجهة قد تبدو مثيرة للاهتمام، إلا أنه يجب تجنبها بسبب عيوب التصميم المحتملة. استخدم الفصول الخاصة ذات النهائيات الثابتة بدلاً من ذلك للحفاظ على قاعدة تعليمات برمجية نظيفة ومرنة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3