الواجهات عمليًا
استخدم الواجهات كأنواع، ومرّرها إلى الدوال، واستبدل التنفيذات بسهولة. تدرّب على أنماط صغيرة لكتابة شفرة مرنة.
الواجهات عمليًا درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 3 دروس في المجموع.
نظرة عامة
الواجهات عمليًا: تعاملوا مع القدرات على أنها أنواع، وأبقوا الشيفرة المستدعية مستقلة عن الفئات الفعلية. ويمكنكم تمرير واجهة إلى دالة، وتخزينها في قائمة، واستبدالها بتطبيق مختلف عند الحاجة.
الواجهة كمعامل
عندما تأخذ الدوال النوع interface كمعامل، تكتسب مرونة أكبر:
- تبقى الشيفرة المستدعية ثابتة.
- يمكن استخدام فئات مختلفة إذا نفذت العقد نفسه.
- في الاختبارات، يمكنكم تركيب Fake أو Stub وتجربتهما بسرعة.
الشيفرة: إمكانية Printable
تستخدم الدالة عقد Printable بدلًا من الفئة الفعلية؛ وحتى إذا تغيرت التطبيقات، تبقى الشيفرة المستدعية نفسها.
public class Main {
// 1) Define a tiny capability
static interface Printable { void print(); }
// 2) Two implementations
static class TextDoc implements Printable {
public void print() { System.out.println("[TextDoc] Printing text pages"); }
}
static class Photo implements Printable {
public void print() { System.out.println("[Photo] Printing a photo"); }
}
// 3) A method that depends on capability, not class
static void runJob(Printable p) {
p.print(); // caller does not care which class it is
}
public static void main(String[] args) {
runJob(new TextDoc());
runJob(new Photo());
}
}
الواجهة كنوع القيمة المُعادة
أحيانًا تعيد دالة factory واجهةً. لا يرى المستدعي سوى القدرات، ولا يحتاج إلى معرفة الفئة الفعلية. وهذا يقلل الاعتمادية ويزيد الوحدية.
الشيفرة: Strategy مع Formatter
تعمل الدالة نفسها مع تطبيقات Formatter مختلفة. وقد تمكنا من تغيير السلوك من دون تغيير الفئة.
public class Main {
// Strategy: different ways to format text
static interface Formatter { String format(String s); }
static class UpperFormatter implements Formatter {
public String format(String s) { return s.toUpperCase(); }
}
static class LowerFormatter implements Formatter {
public String format(String s) { return s.toLowerCase(); }
}
// Uses any Formatter
static String show(String title, Formatter f) {
return title + " -> " + f.format(title);
}
public static void main(String[] args) {
System.out.println(show("Hello", new UpperFormatter()));
System.out.println(show("Hello", new LowerFormatter()));
}
}
الشفرة: قائمة الواجهات
يمكن أن تكون المصفوفة/القائمة من نوع واجهة. تستدعي الحلقة النوع نفسه من الاستدعاء؛ وينفّذ كل عنصر تطبيقه الخاص.
public class Main {
static interface Task { void run(); }
static class EmailTask implements Task { public void run(){ System.out.println("Send email"); } }
static class ReportTask implements Task { public void run(){ System.out.println("Generate report"); } }
static class CleanupTask implements Task { public void run(){ System.out.println("Clean temp files"); } }
public static void main(String[] args) {
Task[] queue = { new EmailTask(), new ReportTask(), new CleanupTask() };
for (int i = 0; i < queue.length; i = i + 1) {
queue[i].run(); // same call, different behavior
}
}
}
اختبار تطبيقي على الواجهات
تحقق سريع: ما فائدة «البرمجة باستخدام واجهة»؟
مراجعة
مراجعة: استخدام نوع الواجهة للمعاملات والقيم المعادة والمجموعات يجعل الشفرة مرنة. يمكنكم تبديل التطبيقات وتجربة البدائل بسرعة باستخدام كائنات وهمية في الاختبارات.
الأسئلة الشائعة
هل درس «الواجهات عمليًا» مجاني؟
نعم — نص درس «الواجهات عمليًا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 3 دروس في المجموع.
ماذا ستتعلم في «الواجهات عمليًا»؟
استخدم الواجهات كأنواع، ومرّرها إلى الدوال، واستبدل التنفيذات بسهولة. تدرّب على أنماط صغيرة لكتابة شفرة مرنة. تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «الواجهات عمليًا»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الواجهات عمليًا
- أساسيات Generics (T والاستدلال)
- الدوال والفئات العامة