利用spring实现策略模式

利用spring实现策略模式

代码

public abstract class BaseHandler<T> {

    @Transactional(rollbackFor = Exception.class)
    public abstract void handle(String payload);

    /**
     * 对应类型的处理方式
     * @return
     */
    public abstract String type();

	 /**
     * 获取泛型对象类型
     * @return
     */
    private Class<T> getClazz() {
        ParameterizedType parameterizedType = (ParameterizedType)this.getClass().getGenericSuperclass();
        Class<T> actualTypeArgument = (Class<T>) parameterizedType.getActualTypeArguments()[0];
        return actualTypeArgument;
    }
}


@Component
public class A extends BaseHandler<Object>{

    @Override
    protected void handle(String parser) {

    }

    @Override
    public int type() {
        // 枚举获取
        return 1;
    }
}


@Service
public class Test{

    private Map<String, BaseHandler<Object>> handlerMap;

	public void test(int type, String payload) {
		BaseHandler<Object> handler = handlerMap.get(type);
		if(handler == null){
		}
		// 不同类型不同处理
		handler.handle(payload);
	}

    @Autowired
    public void init(List<BaseHandler<Object>> handlers) {
        handlerMap = handlers.stream().collect(Collectors.toMap(BaseHandler::type, i->i));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值