基于注解实现的策略模式

本文探讨在项目开发中,如何使用策略模式处理复杂的逻辑判断。通过定义策略名称、策略注解、策略行为接口、策略处理器和策略容器,实现基于注解的策略模式。在示例中,策略模式用于解析不同类型的用户消息,如ChatMsg和SysMsg,避免使用switch...case或if...else,提高了代码的可维护性和扩展性。
摘要由CSDN通过智能技术生成

1 背景

在项目开发的过程中,我们经常会遇到如下的一种场景:对于用户的请求需要根据不同的情况进行不同的处理。

  • 最简单粗暴的一种处理方式是使用switch…case或者if…else。但是这样处理方式只适用于处理逻辑简单或者情况分类较少的情况,如学校发放校服,男同学发放男士衣服,女同学发放女士衣服。
  • 但是,如果处理逻辑毕竟复杂,或者情况分类较多,甚至未来有可能增加情况分类,上一种处理方式就会显得力不从心。此时使用策略模式将会是一种更优的处理方式。

2 基础配置&步骤

以下的方案是基于注解实现的策略模式。基础步骤&配置如下:

  • 定义策略名称:该项使用枚举实现
  • 定义策略名称注解:使用注解进行定义
  • 定义策略行为接口:该接口定义了策略行为
  • 定义策略处理器:包含策略名称的注解,并实现了策略行为接口
  • 定义策略容器:此处使用map作为策略容器,key为策略名称注解,value为策略处理器的实例
  • 初始化策略:容器初始化时候,从容器中读取包含策略名称注解的实例,并将其放入到策略容器中。

3 代码实现

在以下的例子中,会针对用户请求的Msg进行解析,msgType有两种:一种是聊天消息ChatMsg,还有一种是系统消息SysMsg。实现方式如下所示:

1)定义策略名称

public enum MsgType {
   

    CHAT_MSG,
    SYS_MSG;
}

2)定义策略名称注解

@Target({
   ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Type {
   
    MsgType value();
}

3)定义策略行为接口

public interface BaseMsgHandler {
   </
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值