java 事件舉例

話很少說,上代碼:

package test;

import java.util.EventListener;
import java.util.EventObject;
import java.util.List;
import java.util.Vector;

class EventClassOne extends EventObject{

    public EventClassOne(Object source) {
        super(source);
    }
}
class EventSource{
    public String name;
    public EventSource(String name){
        this.name=name;
    }
//    存儲事件監聽器的籃子
    Vector listeners=new Vector();
// 把事件監聽器加到籃子裏
    public void  addEventListener(EventListener e){
        listeners.add(e);
    }
    //        觸發事件的動做
    public void say(String s){
        for (int i = 0; i <listeners.size() ; i++) {
            ((MyEventListener)listeners.elementAt(i))
                    .action(new EventClassOne(this));
        }
    }

}
class MyEventListener implements EventListener {

    public void action(EventObject eventObject){
        if(eventObject.getSource() instanceof EventSource){
            String name = ((EventSource) eventObject.getSource()).name;
            System.out.println(name+",喊什麼喊,吵到人家作愛了");
        }
    }
}

public class EventTest {
    public static void main(String[] args) {
        EventSource 小鳳=new EventSource("小鳳");
        EventSource 巨柱=new EventSource("巨柱");
        MyEventListener listener1=new MyEventListener();
        MyEventListener listener2=new MyEventListener();
        小鳳.addEventListener(listener1);
        小鳳.addEventListener(listener2);
        巨柱.addEventListener(listener1);

        小鳳.say("想要個猛男");
        巨柱.say("想要個美女");

    }
}

結果:

"C:\Program Files\Java\jdk1.8.0_171\bin\java.exe"
小鳳,喊什麼喊,吵到人家作愛了
小鳳,喊什麼喊,吵到人家作愛了
巨柱,喊什麼喊,吵到人家作愛了
Process finished with exit code 0java

原理圖:

相關文章
相關標籤/搜索