首页 > 编程知识 正文

领域驱动架构,java插件化开发框架

时间:2023-05-06 00:19:20 阅读:141969 作者:1343

上一篇文章介绍了事件驱动的基本组件。 本文开发了一个事件驱动的框架。

信息系统

事件驱动框架引用某些消息系统的模式。 进行以下类比。 事件和消息、事件处理器和信道、事件中继器和路由。

一个例子是邮政系统。 邮递员背包里有几封信,那里有收件人的地址。 邮递员必须把信送到合适的地址。 这个过程可以描述如下吗?

流程交付_ letters (satchel ) :

repeat

letter :=next _ letter (satchel )

for home in homes do:

if letter.destination==home :

dliver_letter(home ) )。

end if

end for

until satchel is empty

结束进程

在本例中,可以使用事件驱动的编程建模。 然后,以最抽象的形式开发框架,对系统进行建模。

消息

每条消息都有特定的类型,类型将消息与处理器相关联。 消息接口的定义如下:

公共接口消息{

publicclassextendsmessagegettype (;

}

(“管道”) )。

管道与某种类型的消息相关联。 我们把消息发送到每条消息的各自管道进行处理。

公共接口信道{

公共语音显示(e message;

}

动态路由

消息系统的交换通过路由进行。 路由将指定的消息转发到特定的信道。 在初始化阶段,路由注册消息及其关联的通道。 然后,通过路由传输的消息自动与消息类型和相关管道匹配,并被路由到相关管道。

publicinterfacedynamicrouter { publicvoidregisterchannel (classextendsecontenttype,Channel extends E channel ); publicabstractvoiddispatch }

然后,实现这些接口以创建完整的框架。

框架的实施

活动

我们将事件定义为消息的子类。

导入消息; publicclasseventimplementsmessage { @ overridepublicclassextendsmessagegettype () { return getClass; }

处理器

处理器最终接收并处理事件。 在这里实现流水线接口。

导入通道;

publicclasshandlerimplementschannel {

@Override

公共void dispatch (事件消息)。

system.out.println (message.getclass () );

}

}

事件中继器

事件中继器用于注册消息和通道。 本示例注册处理器及其关联的事件类。 我用HashMap把这个和处理器关联起来了。

import java.util.HashMap; import java.util.Map; import edu.gio cc.util.router.channel; import edu.gio cc.util.router.dynamic router; publicclasseventdispatcherimplementsdynamicrouter { privatemap,Handler handlers; public EventDispatcher () { Handlers=new HashMap,handler ); } @ overridepublicvoidregisterchannel (classextendseventcontenttype, Channel extends Event channel ) Handlers.put ) content } @ overridepublicvoiddispatch (event content ) Handlers.get ) content }

基本框架已经完成。 接下来进行测量。

公共类程序{

publicstaticvoidmain (string [ ] args ) {

eventdispatcherdispatcher=neweventdispatcher (;

dispatcher.register channel (event.class,new Handler () );

dispatcher.dispatch(newevent ) );

}

}

在APP应用中进行扩展

现在,框架已创建。 一般来说,通用框架需要以下特性。

控件翻转就像消息系统一样,框架控制数据流。

可扩展性APP应用程序可以根据使用情况进行扩展。

无法更改帧代码。 无法更改帧代码。

上述属性说明了APP应用程序如何连接到框架。 框架是体系结构的抽象东西。

Handler和Event类是框架层的类。 基于框架开发的代码必须位于APP应用层。 框架是抽象和提供事件驱动架构的基础工具。

现在,您可以通过继承Handler类来创建事件处理程序,并通过继承Event类来创建事件。 它还将向调度程序注册这些事件处理程序和事件。

下一篇文章给出了仿真事件驱动系统的框架的具体实现。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。