برنامه نویسی

🧠 درک رابط های نشانگر در جاوا-با موارد استفاده در دنیای واقعی

interface رابط نشانگر چیست؟

بوها رابط نشانگر نوع خاصی از رابط کاربری در جاوا است که هیچ روش و زمینه ای نداردبشر عادت کرده است یک کلاس را با ابرداده علامت گذاری کنید برای نشان دادن اینکه کلاس یک رفتار خاص دارد. این نشانگر به عنوان برچسب عمل می کند که به ابزارها ، کتابخانه ها یا JVM اجازه می دهد تا در طول زمان رفتار خاص را اعمال کنند.


✅ نمونه هایی از رابط های نشانگر در کتابخانه استاندارد جاوا

رابط شرح
Serializable یک کلاس را به عنوان قادر به سریال شدن در یک جریان بایت نشان می دهد
Cloneable یک کلاس را به عنوان واجد شرایط برای کلون کردن شیء از طریق نشان می دهد Object.clone()
Remote در Java RMI استفاده می شود تا کلاس را بیان کند که از راه دور قابل استفاده است
RandomAccess نشان می دهد که a List از دسترسی سریع سریع (زمان ثابت) پشتیبانی می کند

🛠 مورد استفاده در دنیای واقعی: کنترل دسترسی سفارشی با رابط نشانگر

🧑‍💻 سناریو:

فرض کنید شما در حال ساختن یک سیستم کنترل دسترسی مبتنی بر نقش (RBAC)بشر شما می خواهید خدمات خاصی را محدود کنید تا فقط کلاس هایی که یک رابط نشانگر ویژه را اجرا می کنند بتوانند به آنها دسترسی پیدا کنند. به عنوان مثال ، فقط کلاس های “مدیر” باید بتوانند عملیات خاصی را انجام دهند.


📦 اجرای مرحله به مرحله

1. رابط نشانگر را تعریف کنید

public interface AdminAccess {
    // Marker Interface: no methods
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


2. کلاس ها را با آن علامت گذاری کنید

public class AdminUser implements AdminAccess {
    private String name;

    public AdminUser(String name) {
        this.name = name;
    }

    // Getters, setters, and more...
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

public class RegularUser {
    private String name;

    public RegularUser(String name) {
        this.name = name;
    }

    // Getters, setters, and more...
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


3. یک سرویس امن ایجاد کنید که نشانگر را بررسی کند

public class SecureService {

    public void performAdminOperation(Object user) {
        if (user instanceof AdminAccess) {
            System.out.println("Admin operation performed.");
        } else {
            throw new SecurityException("Access denied. Admin privileges required.");
        }
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


4. رفتار را آزمایش کنید

public class App {
    public static void main(String[] args) {
        SecureService service = new SecureService();

        AdminUser admin = new AdminUser("Alice");
        RegularUser regular = new RegularUser("Bob");

        service.performAdminOperation(admin);     // Allowed ✅

        service.performAdminOperation(regular);   // Exception ❌
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


⚖ رابط های نشانگر در مقابل حاشیه نویسی

نشان رابط نشانگر حاشیه نویسی
از نوع ایمنی در زمان کامپایل اجرا می شود خیر (نیاز به بازتاب در زمان اجرا دارد)
بازتاب مورد نیاز است هیچ بله
استفاده از مثال Serializableبا Cloneable @Deprecatedبا @Overrideبا @Entity
بهتر برچسب زدن رفتاری (بررسی OOP) ابرداده و پیکربندی

🧵 چه موقع از رابط های نشانگر استفاده کنیم؟

  • وقتی نیاز دارید بررسی نوع زمان کامپایل (مانند استفاده instanceof).
  • وقتی می خواهید اجرا کنید دسترسی مبتنی بر قرارداد به خدمات
  • هنگام کار با سریال سازی ، کلونینگ، یا سایر رفتارهای سطح پایین.
  • وقتی می خواهی ابرداده ساده بدون نیاز به پردازش حاشیه نویسی یا تأمل.

📌 خلاصه

  • رابط های نشانگر هستند رابط های خالی که به عنوان برچسب ها یا پرچمبشر
  • آنها ابزاری قدرتمند برای افزودن هستند ابرداده با نوع ایمنیبشر
  • از آنها در مواردی استفاده کنید که اجرای رفتار یا کنترل دسترسی لازم باشد.
  • در صورت نیاز حاشیه نویسی را ترجیح دهید پیکربندی ابرداده زمان اجرا یا رسیدگی انعطاف پذیر تر.

thoughts افکار نهایی

رابط های نشانگر اغلب کم ارزش هستند اما هنوز هم بسیار مفید هستند ، به خصوص در محیط های سخت OOP که در آن سلسله مراتب وت برچسب زدن به رفتار مهم هستند در حالی که حاشیه نویسی ها انعطاف پذیرتر هستند ، رابط های نشانگر A را ارائه می دهند ضمانت زمان کامپایل این می تواند کد شما را ایمن تر و قوی تر کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا