/**
* 事件對象,封裝了事件的事件源以及和該事件相關的數據
* @author Administrator
*
*/
public interface Event {
}
/**
* 單擊的監聽器
* @author Administrator
*
*/
public interface ClickListener {
/**
* 單擊事件
* @param event
*/
public void onClick(Event event);
}
import javax.swing.JOptionPane;
/**
* 按鈕的單擊監聽器
* @author Administrator
*
*/
public class ButtonListener implements ClickListener {
@Override
public void onClick(Event event) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "press another button!");
}
}
/**
* 觀察者設計模式的使用
* @author Administrator
*
*/
public class MyButton {
private ClickListener listener;
/**
* 單擊
*/
public void click(){
listener.onClick(null);
}
/**
* 綁定監聽器
* @param listener
*/
public void addOnClickListener(ClickListener listener){
this.listener = listener;
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//實例化按鈕
MyButton btn = new MyButton();
//爲按鈕綁定單擊監聽器
btn.addOnClickListener(new ButtonListener());
//模擬實現單擊動作
btn.click();
}
}