+1 امتیاز
قبل در برنامه نویسی توسط (1.3هزار امتیاز)
برچسب گذاری دوباره قبل توسط
سلام /

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

ممنونم دوستان /

1 پاسخ

0 امتیاز
قبل توسط (1.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");
    }
}

سوالات مشابه

0 امتیاز
1 پاسخ 266 بازدید
+1 امتیاز
1 پاسخ 1.8هزار بازدید
+2 امتیاز
1 پاسخ 579 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط 1993 (242 امتیاز)
+1 امتیاز
1 پاسخ 468 بازدید
+1 امتیاز
1 پاسخ 703 بازدید
0 امتیاز
1 پاسخ 463 بازدید
+2 امتیاز
2 پاسخ 1.3هزار بازدید
...