【问题标题】:An example of Event-Driven architecture? [closed]事件驱动架构的一个例子? [关闭]
【发布时间】:2023-12-27 23:41:01
【问题描述】:

谁能给我一个事件驱动架构的例子,一个简单的理解它,我有一个项目需要实现事件驱动架构。

【问题讨论】:

标签: java


【解决方案1】:

最简单的方法可能是使用 Swing 或其他 GUI 工具包。

Swing 正在实现事件驱动架构,因为与用户的每次交互都被建模为一个事件,并且您必须为特定类型的事件注册一个事件处理程序。例如。 ActionListener 监听用户按下按钮时发生的事件。

【讨论】:

  • 请看实际定义。
  • 我做到了,并坚持我的(已删除)评论。但从其他答案来看,这无济于事。
  • 我理解您的抱怨,而且很可能是正确的。但我不认为作者在寻找一个复杂的答案。
  • 但是看着 Swing(或 JSF)对他没有帮助
【解决方案2】:

更改对象的状态称为事件。事件包括鼠标单击、鼠标移动、单击按钮、选择单选复选框等。 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();  
}  
}  

【讨论】:

    【解决方案3】:

    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
        }
    }
    

    【讨论】: