在开发中经常遇到同一类似的处理,这一族类似的处理会根据不同的场景选择不同的处理类。例如,在报表生成中,需要生成交易明细日报,清算明细日报,挂账日报,积分月报等,这一族报表的处理都是类似的,也就是从数据库中获取数据,并按照报表格式导出即可。
实现方式:
1. 建一个处理接口,该接口包含一个获取code的方法,该code是处理类的标识,具有唯一性;一个处理方法,该方法处理报表数据,以建立报表。
2. 多个处理接口实现类,一个类对应一个报表。
3. 一个选择器接口,该接口包含一个获取处理类的方法,该方法通过传入code来获取处理器。
4. 一个选择器实现类,该实现类实现选择器接口和BeanPostProcessor接口,在实现BeanPostProcessor接口中,通过将实现了处理器接口的所有类加入到一个Map中进行保存,Map的key为处理器类的code,所以可以通过code来获取对应的处理器。