接口回调
public class Frame1 extends Frame implements Frame2.MoneyListener {
private Label label = new Label('金额:');
private Button button = new Button('购买');
public Frame1() {
this.setSize(400,200);
this.setLayout(new FlowLayout());
this.add(button);
this.add(label);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Frame2().setMoneyListener(Frame1.this);
}
});
this.setVisible(true);
}
@Override
public void setMoney(String money) {
label.setText(money);
}
public static void main(String[] args) {
new Frame1();
}
}
//接口回调:
//当一个对象需要给外部对象提供数据时,我们可以定义一个内部接口把数据通过接口传递出去
//所有外部对象需要这个数据时,就实现这个接口
//好处:传递数据的对象不直接依赖接收数据的对象(降低耦合性 )
public class Frame2 extends Frame{
private TextField text = new TextField(20);
private Button button = new Button('付款');
public Frame2() {
this.setSize(400,200);
this.setLayout(new FlowLayout());
this.add(text);
this.add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String money = Frame2.this.text.getText();
moneyListener.setMoney(money);
}
});
this.setVisible(true);
}
private MoneyListener moneyListener;
public void setMoneyListener(MoneyListener moneyListener){
this.moneyListener=moneyListener;
}
public static interface MoneyListener{
public void setMoney(String money);
}
}
观察者模式
//被观察者接口
public interface MessageSubject {
public void registerObserver(Observer o);
public void removeObserver(Observer o);
public void notifyObservers();
}
//观察者接口
public interface Observer {
//更新消息
public void update(String message);
}
//具体的被观察者
public class Message implements MessageSubject {
//维护的所有观察者列表
private List list = new ArrayList<>();
private String message;
public void setMessage(String message){
this.message=message;
notifyObservers();
}
@Override
public void registerObserver(Observer o) {
list.add(o);
}
@Override
public void removeObserver(Observer o) {
list.remove(o);
}
@Override
public void notifyObservers() {
for (int i = 0; i < list.size(); i++) {
Observer observer = list.get(i);
observer.update(message);
}
}
}
//具体的观察者
public class User implements Observer{
private String name;
public User(String name) {
this.name = name;
}
@Override
public void update(String message) {
System.out.println(name+'收到消息: '+message);
}
}
public class TestDemo {
public static void main(String[] args) {
Message message = new Message();
User user1 = new User('lili');
User user2 = new User('tom');
User user3 = new User('bing');
message.registerObserver(user1);
message.registerObserver(user2);
message.registerObserver(user3);
message.setMessage('hello world,java is best');
}
}
文章为作者独立观点,不代表股票交易接口观点