业务场景
要生成大量的报表,推送给下游,有几十种场景,每种场景要生成十多张报表
不同场景之间有共性,也有差异
我就把共性都封装在框架里,把差异留给应用开发去配置,
开发起来很快,一个初级开发,我给她讲某个场景需求和这个框架怎么用,讲了20分钟,她用了不到2个小时,就开发完了十多张报表
而且维护也很快,很多问题都是改一个地方,就都好了
1.统一的入口
ExportExecutor.execute()
2.易开发 易维护 易扩展
开发一个场景的十多个报表,主要工作量就是在 DataParser 配置一下字段的先后次序和分隔符,其他步骤都是复用的,比如,生成 txt 格式的文件,就配一个 TxtFileGenerator 就好了
主类定义步骤,每一步都有对应的类去处理,中间结果保存在 RequestContext 里
桥接模式
每一种文件格式对应一个主类,主类定义步骤,每个步骤对应一个维度
每一个维度对应一个继承体系,可以独立的变化,通过抽象层建立关联
DataReader, DataParser, FileGenerator, FileCompressor, FilePoster
策略模式
把 zip 格式改成 gzip,把 txt 格式改成 excel,
改一下配置就好,切换容易
单一职责原则
把公用的放在对应的层面上,容易维护,一个原因只改一个类
把招商银行的 13 个报表的分隔符换一种,或者只改 1 个报表的分隔符,都只需要改一个地方