处理机设计

什么是处理机?

处理机为某个业务的处理单元,当回调时,根据消息类型执行不同的处理机,实现业务处理。

设计需求场景

1. 远程回调jms消息后,动态调用处理机列表(处理机为多个)

2.处理机分两种类型,一种是之前(在业务逻辑快之前调用),一种是之后(在业务逻辑快之后调用)

3.每个处理机都要有限制条件,即配置调用条件,如果满足配置的条件才被调用

设计思路

解决场景1

首先需要一个处理机List,一个处理机接口:

即List<IRemoteCallbackHandler> handlerList属性。

处理机接口需要一个执行方法execute

解决场景2

分两种类型的处理机,那就需要两种类型的处理机接口:

1.之前调用的处理机(BaseRemoteBeforeCallbackHandler)

2.之后调用的处理机(BaseRemoteAfterCallbackHandler)

解决场景3

考虑到代码的复用性,采用适配器模式,提出一个总的处理机抽象类,配置conditionMap属性和验证方法

1.Map<String,Object>conditionMap: 保存调用条件(如event=task-create)

2.Boolean validate(Map<String, Object> param):验证是否满足调用条件


综合设计思路

综合考虑使用场景和程序的扩展性和维护性,决定采用常用的适配器模式

类图如下:




时序图:

1.handle调用parseMsgToMap

2.遍历remoteCallbackHandlerList

3,.判断调用类型(type)

4.调用remoteCallbackHandler.validate(param),判断是否通过

5.如果通过,调用remoteCallbackHandler.execute(param);


/**
	 * 处理方法
	 * @param message 消息对象
	 * @param type 类型
	 */
	public void handle(MapMessage mapMessage,String type){
		//将消息解析为map
		Map<String,Object>param=this.parseMsgToMap(mapMessage);
		//循环处理类集合
		for(IRemoteCallbackHandler remoteCallbackHandler:remoteCallbackHandlerList){
			//如果类型符合
			if(type.equals(remoteCallbackHandler.type())){
				//如果验证条件通过
				if(remoteCallbackHandler.validate(param)){
					//执行
					remoteCallbackHandler.execute(param);
				}
			}
		}
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值