تمام سوالات سوالات بدون پاسخ سوال بپرسید

می خواهم در یک کلاس رویدادی تعریف کنم تا کلاس های دیگر به آن متصل شده و در صورت اتفاق افتادن رویداد مربوطه، تمام ثبت نام کننده ها برای آن رویداد با خبر شوند. اما این کار چطور در java انجام می شه؟

1 پاسخ

اگر برای یک کلاس می خواهید رویداد تعریف کنید من پیشنهاد می کنم از الگوی طراحی Observer استفاده کنید که در جاوا بصورت توکار ازش پشتیبانی میشه:

ابتدا باید کلاسی که قرار است رویداد درون آن اتفاق بیوفتد کلاس java.util.Observable را extends کند:

    import java.util.Observable;

public class Customer extends Observable{
    private String name;

    public void setName(String name) {
        setChanged();
        notifyObservers(name);
        this.name = name;
    }

    public String getName() {
        return name;
    }

}

در کلاس بالا در صورتی که برای یک شئ Customer نام جدید set شود، تمام کسانی که برای این رویداد handler تنظیم کرده اند باخبر می شوند، حالا هر کسی که می خواهد از رویداد تغییر نام باخبر شود باید با استفاده از متد addObserver کلاس Customer کلاس handler مورد خود را register کند.

   import java.util.Observable;

public class Observer {

    public static void main(String[] args) {
        Customer customer = new Customer();

        customer.addObserver(new java.util.Observer() {
            @Override
            public void update(Observable o, Object arg) {
                if (arg instanceof String) {
                    String name = (String) arg;
                    System.out.println("Customer name changed = "+name);
                }
            }
        });

        customer.setName("Saeed");
    }
}
toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×101
  • ×35
  • پرسیده شده: 10 ژوئن '13, 15:24
  • بازدید: 2,917 بار
  • آخرین بروزرسانی: 04 اوت '13, 14:56

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها