0
点赞
收藏
分享

微信扫一扫

通用接口开放平台设计与实现——(33)消息服务之枚举的处理

系统设计与实现,免不了需要使用枚举类型来处理一些常量值的集合。

使用枚举类型,可以在系统的逻辑处理中使用编码而不是文本来进行条件判断,并且当需要扩展或修改的时候,只需要调整1个地方就行了。

例如,以下代码通过枚举类型MessageTypeEnum来区分进行不同的逻辑处理

      if (messageType.equals(MessageTypeEnum.REQUEST.name())) {
            RequestMessage requestMessage = JSON.parseObject(message, RequestMessage.class);
            out.add(requestMessage);

        }else if (messageType.equals(MessageTypeEnum.RESPONSE.name())) {

            ResponseMessage responseMessage = JSON.parseObject(message, ResponseMessage.class);
            out.add(responseMessage);
        }

如果没有枚举类型,则往往我们需要直接写成 if (messageType.equals(“REQUEST”),或者将REQUEST单独定义一个常量,这两种方式明显不如使用枚举类型清晰明确且易于扩展。

此外,在需要写入数据的情况下,同样可以利用枚举类型的常量性质,写入对应的值,优点与上面相同。

	public RequestMessage(){
		//默认设置消息类型
		super.setMessageType(MessageTypeEnum.REQUEST.name());
		//将发送次数初始化为0
		this.setSendCount(0);

	}

我们在message-common项目中,创建一个单独的包enums,对枚举值进行定义,约定所有枚举类型以Enum结尾。

以下是消息服务使用到的五个枚举值,其含义可看见注释,后面还会详细说如何使用。

/**
 * 消息类型
 * @author  wqliu
 * @date  2021-10-5 10:06
*/
public enum MessageTypeEnum
{
	/**
	 * 请求消息
	 */
	REQUEST,
	/**
	 * 响应消息
	 */
	RESPONSE

}

/**
 * 消息状态,专用于消息客户端模式
 * @author  wqliu
 * @date  2021-10-5 10:07
*/
public enum MessageStatusEnum
{

	/**
	 * 待请求
	 */
	WAIT_REQUEST,

	/**
	 * 已请求
	 */
	REQUESTED,

	/**
	 * 已响应
	 */
	RESPONSED,

	/**
	 * 无需请求(消息类型为响应消息或客户端未订阅消息)
	 */
	NOT_TO_REQUEST
	

}




/**
 * 消息状态,专用于消息接口模式
 * @author  wqliu
 * @date  2021-10-5 10:07
*/
public enum ApiMessageStatusEnum
{

	/**
	 * 待处理
	 */
	WAIT_HANDLE,
	/**
	 * 已处理
	 */
	HANDLED
	

}
/**
 * 消息响应结果
 * @author wqliu
 */
@Getter
public enum MessageResponseResultEnum {

    /**
     * 成功
     */
    SUCCESS,
    /**
     * 错误
     */
    ERROR
    ;

}

/**
 * 对接模式
 * @author  wqliu
 * @date  2022-1-26 14:30
*/
public enum IntegrationModelEnum {
    /**
     * 消息客户端
     */
    CLIENT,

    /**
     * 接口轮询
     */
    INTERFACE
}

举报

相关推荐

0 条评论