Language متوسط

استخرج المنطق المشترك في الواجهات باستخدام الدوال الخاصة.

✕ Java 8
interface Logger {
    default void logInfo(String msg) {
        System.out.println(
            "[INFO] " + timestamp() + msg);
    }
    default void logWarn(String msg) {
        System.out.println(
            "[WARN] " + timestamp() + msg);
    }
}
✓ Java 9+
interface Logger {
    private String format(String lvl, String msg) {
        return "[" + lvl + "] " + timestamp() + msg;
    }
    default void logInfo(String msg) {
        IO.println(format("INFO", msg));
    }
    default void logWarn(String msg) {
        IO.println(format("WARN", msg));
    }
}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
🧩

إعادة استخدام الكود

شارك المنطق بين الدوال الافتراضية دون تكرار.

🔐

التغليف

تفاصيل التطبيق تظل مخفيةً عن الفئات المُنفِّذة.

🧹

واجهات غير مكررة

لا مزيد من النسخ واللصق بين الدوال الافتراضية.

الأسلوب القديم
منطق مكرّر
الأسلوب الحديث
الدوال الخاصة
منذ JDK
9
الصعوبة
متوسط
الدوال الخاصة في الواجهات
متاح

متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)

يسمح Java 9 بالدوال الخاصة في الواجهات مما يُتيح لك مشاركة الكود بين الدوال الافتراضية دون كشف تفاصيل التطبيق للفئات المُنفِّذة.

مشاركة 𝕏 🦋 in