接口、抽象类、实现类的关系

最近项目遇到一个需求,写一个预警的功能,然后预警的方式可能是多个,比如通过短信预警,可能通过App内消息推送预警,也有可能是微信内的推送预警,然后就写了一个这个东西 ;

大致思路如下:
预警分为三个步骤:

  1. 查询预选数据
  2. 匹配预警规则,满足规则的加入发送预警队列
  3. 构造短信内容

具体实现如下:

  • 接口
    • 实现三个方法:查询数据 buildData 匹配规则 rule 构造结果内容 buildResult
	public interface WarnService {

	/**
	 * 规则匹配器
	 * @author fenglu
	 * @return 
	 * @date 2019年11月14日 下午2:06:01
	 */
	void buildRule(List<GeneralResult> results,List<WarnReceiverEntity> receivers);
	
	/**
	 * 构建数据源
	 * @author fenglu
	 * @date 2019年11月14日 下午2:06:43
	 */
	void buildData(Map<Integer, List<Integer>> proRelevancy);

	
	
	/**
	 * 构建结果集
	 * @description
	 * @author fenglu
	 * @return 
	 * @date 2019年11月14日 下午2:07:04
	 */
	void buildResult();
	
	
	/**
	 * 执行
	 */
	void execute();
}
  • 抽象类
    • 抽象类实现该接口,并且实现接口中的四个方法,算是一个基本的实现类
public abstract class AbstractWarnserviceImpl extends CommonServiceImpl implements WarnService{

	
	@Autowired
	private CacheServiceI cacheService;
	@Override
	public void buildRule(List<GeneralResult> results,List<WarnReceiverEntity> receivers) {
	}

	@Override
	public void buildData(Map<Integer, List<Integer>> proRelevancy) {
		getData(proRelevancy);
	}

	/**
	 * 获取通用结果集
	 * @author fenglu
	 * @param proRelevancy {warnType:[proid1,proid2,proid3...],...}
	 * @date 2019年11月15日 上午10:44:00
	 */
	private void getData(Map<Integer, List<Integer>> proRelevancy) {
	}

	@Override
	public void buildResult() {
		// TODO Auto-generated method stub
	}

	@Override
	public void execute() {
	}
	
	private Map<Integer, List<Integer>> getProRelevancy(Map<Integer, List<WarnEntity>> projectConfig) {
		Map<Integer, List<Integer>> relevancy = new HashMap<Integer, List<Integer>>();
		return relevancy;
	}

	private Map<Integer, List<WarnEntity>> findProjectConfig() {
		return projectWarnMap;
	}

	/**
	 * 发送模式
	 * @description
	 * @author fenglu
	 * @date 2019年11月15日 上午10:43:35
	 */
	public void sendMode(){
		
	}
	/**
	 * 信息结果处理
	 * @description
	 * @author fenglu
	 * @date 2019年11月15日 上午10:43:31
	 */
	public void msgResult(){	
	}
}抽象类中的代码不用细看,主要就是实现了接口的四个方法
  • 实现类
    • 实现类继承上面的抽象类,重写sendMode方法,用来实现不同的发送方式,如果我们想自定义规则,也可以重写rule方法。

总结:这就是接口-抽象类-实现类的思路,主要还是为了将一个功能扩展。想法比较简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值