优雅的进行方法功能扩展

背景

A为一个通用jar包,涉及监听kafka消息,消费数据入库。
多个项目可通过maven引入A包,实现消费相关数据的功能。
B服务中引入A,且需要对A中的消息进行筛选,筛选出符合条件的推送给三方服务处理。
需要能够在不改动A原有代码情况下,进行有效拓展(也可以不拓展),但需要提供拓展的途径。

处理过程

在通用包A中

class A{

@KafkaHandler
public void listen(String message){
// 处理逻辑1
.....
// 扩展逻辑
this.extend();

// 处理逻辑2
......
}
protected void extend(){

}
}

引入A的服务B中

@KafkaListener(topics = KAFKA_TOPIC,)
public void B extends A{
// 如果服务B不做功能的拓展,则B指定topic并继承A类既可

// 如果B需要做额外的功能拓展,只需要重写A类中的extend方法
@override
protected void extend(){
// 重写父类方法,拓展逻辑
}
}

当监听到消息时,
B继承了A的listen方法,会执行父类中的逻辑,但又因为子类重写了父类的extend(),到执行extend方法时,会走子类的逻辑,从而完成功能的拓展。

总结

利用了java特性的多态性,实现功能扩展,降低了模块间的耦合性。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值