【发布时间】:2023-12-27 23:41:01
【问题描述】:
谁能给我一个事件驱动架构的例子,一个简单的理解它,我有一个项目需要实现事件驱动架构。
【问题讨论】:
-
已经在重复的答案中提到了这一点,但以防万一:更高级别的架构示例:medium.com/@wrong.about/…,这里是更低级别的:medium.com/@wrong.about/…
标签: java
谁能给我一个事件驱动架构的例子,一个简单的理解它,我有一个项目需要实现事件驱动架构。
【问题讨论】:
标签: java
最简单的方法可能是使用 Swing 或其他 GUI 工具包。
Swing 正在实现事件驱动架构,因为与用户的每次交互都被建模为一个事件,并且您必须为特定类型的事件注册一个事件处理程序。例如。 ActionListener 监听用户按下按钮时发生的事件。
【讨论】:
更改对象的状态称为事件。事件包括鼠标单击、鼠标移动、单击按钮、选择单选复选框等。 Here's您需要了解的所有信息和方法。 举个简单的例子,这是一个使用监听器的 AWT(Java 的 GUI 工具包)程序
import java.awt.*;
import java.awt.event.*;
class AEvent extends Frame implements ActionListener{
TextField tf;
AEvent(){
tf=new TextField();
tf.setBounds(60,50,170,20);
Button b=new Button("click me");
b.setBounds(100,120,80,30);
b.addActionListener(this);
add(b);add(tf);
setSize(300,300);
setLayout(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
tf.setText("Welcome");
}
public static void main(String args[]){
new AEvent();
}
}
【讨论】:
JSF 也有一个事件驱动的结构。
控制器(处理用户活动)应该通过事件进行通信。这意味着控制器发布一个事件,并且订阅此事件的每个其他控制器都会收到通知,因此可以执行一些操作。
以下示例使用googleEventBus 发布和订阅事件。
// Controller which handles the action if an item is deleted:
public class DeleteItemController {
@Autowired
private EventBus eventBus;
public void deleteShow(MyItem item) {
// some action here calling a service...
eventBus.post(new ItemDeletedEvent(show));
}
}
// controller used to control all items
public class ItemListController {
@Subscribe
public void showDeleted(ItemDeletedEvent event) {
MyItem item = event.getDeletedItem();
// do some action
}
}
【讨论】: