Event Driven 设计模式(上)
Posted Alleria Windrunner
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Event Driven 设计模式(上)相关的知识,希望对你有一定的参考价值。
Event-Driven Architecture 基础
Events:需要被处理的数据
Event Handlers:处理 Events 的方式方法。
Event Loop:维护 Events 和 Event Handlers 之间的交互流程。
/**
*Event 只包含了该 Event 所属的类型和所包含的数据
*/
public class Event
{
private final String type;
private final String data;
public Event(String type, String data)
{
this.type = type;
this.data = data;
}
public String getType()
{
return type;
}
public String getData()
{
return data;
}
}
Event Handlers
public static void handleEventA(Event e)
{
System.out.println(e.getData().toLowerCase());
}
public static void handleEventB(Event e)
{
System.out.println(e.getData().toUpperCase());
}
Event Loop
Event e;
while (!events.isEmpty())
{
//从消息队列中不断移除 Event,根据不同的类型进行处理
e = events.remove();
switch (e.getType())
{
case "A":
handleEventA(e);
break;
case "B":
handleEventB(e);
break;
}
}
import java.util.LinkedList;
import java.util.Queue;
public class FooEventDrivenExample
{
//用于处理 A 类型的 Event
public static void handleEventA(Event e)
{
System.out.println(e.getData().toLowerCase());
}
//用于处理 B 类型的 Event
public static void handleEventB(Event e)
{
System.out.println(e.getData().toUpperCase());
}
public static void main(String[] args)
{
Queue<Event> events = new LinkedList<>();
events.add(new Event("A", "Hello"));
events.add(new Event("A", "I am Event A"));
events.add(new Event("B", "I am Event B"));
events.add(new Event("B", "World"));
Event e;
while (!events.isEmpty())
{
//从消息队列中不断移除,根据不同的类型进行处理
e = events.remove();
switch (e.getType())
{
case "A":
handleEventA(e);
break;
case "B":
handleEventB(e);
break;
}
}
}
}
hello
i am event a
I AM EVENT B
WORLD
以上是关于Event Driven 设计模式(上)的主要内容,如果未能解决你的问题,请参考以下文章
干货 | 用FreeRTOS搭建Event-Driven应用框架
5 Protocols For Event-Driven API Architectures
Flink学习入门教程之Event-driven Applications
IJCAI_论文-深度学习-Deep Learning for Event-Driven Stock Prediction