色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java監(jiān)聽模式和觀察者模式

傅智翔1年前6瀏覽0評論

Java是一門面向?qū)ο蟮木幊陶Z言,在編寫程序時常常使用監(jiān)聽器模式和觀察者模式來實現(xiàn)事件處理和通知功能。

監(jiān)聽器模式是指當某個對象發(fā)生某些特定的事件時,另一個對象能夠捕獲并做出相應(yīng)的處理。在Java中,通過使用Java AWT/Swing框架中的事件監(jiān)聽器機制,可以輕松實現(xiàn)監(jiān)聽器模式。以下是一個使用監(jiān)聽器模式的示例代碼:

public class ButtonTest implements ActionListener {
private JButton button;
public ButtonTest() {
JFrame frame = new JFrame("Button Test");
button = new JButton("Click me");
button.addActionListener(this);
frame.add(button);
frame.pack();
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == button) {
System.out.println("Button clicked");
}
}
public static void main(String[] args) {
new ButtonTest();
}
}

觀察者模式是指當一個對象的狀態(tài)發(fā)生改變時,它能夠自動告知其他對象,從而使得其他對象能夠自動更新。在Java中,通過使用Java內(nèi)置的觀察者模式機制,可以輕松實現(xiàn)觀察者模式。以下是一個使用觀察者模式的示例代碼:

import java.util.Observable;
import java.util.Observer;
public class MessageBoard extends Observable {
private String message;
public void setMessage(String message) {
this.message = message;
setChanged();
notifyObservers();
}
public String getMessage() {
return message;
}
public static void main(String[] args) {
MessageBoard board = new MessageBoard();
Observer observer1 = new MessageBoardObserver();
Observer observer2 = new MessageBoardObserver();
board.addObserver(observer1);
board.addObserver(observer2);
board.setMessage("Hello, world!");
}
}
class MessageBoardObserver implements Observer {
public void update(Observable observable, Object arg) {
if (observable instanceof MessageBoard) {
MessageBoard board = (MessageBoard) observable;
System.out.println(board.getMessage());
}
}
}

在以上示例代碼中,MessageBoard類是被觀察者,MessageBoardObserver類是觀察者。當MessageBoard對象的狀態(tài)發(fā)生改變時,它會自動通知所有的觀察者,觀察者們會自動更新。這個過程中不需要顯式調(diào)用觀察者的任何方法,Java內(nèi)置的觀察者模式機制會自動完成這些操作。