今天有个需求,统计一些数据,按照地区划分,不同地区生成不同的EXCEL。前几天看了老师的设计模式视频,今天就来试一试。
代码结构:
首先说说我对模板模式的理解:对某件事物,如果是从上到下依次发生(面向过程),并且途中有可能是不
确定因素(也可能是为了扩展),但是大部分流程相同,这时候就可以用模板模式;
我这里的需求无非就是:
1、从数据库取得数据,2、根据地区分组,3、根据某些计算规则排名,4、 根据某些格式创建excel
分析:其中1、2肯定是固定的,因此可以列为抽象模板的具体实现。3,4部会变动的可能性很大,为了扩展,
理应延迟到子类实现。
模板类的结构想好了之后,突然又想起一个事情,如果excel规则很多,并且某些模板类可能会按照多种规则解析,那我岂不是每一个模板实现类都要重写规则?想到这里我就想到了“策略模式”。
我对策略模式的理解:当某类事物具备多种行为,且行为多变的时候,我们可以把行为抽取出来单独存在(使用面向接口),然后在事物的具体实现里调用接口,这样能达到行为复用,并且和实现解耦和的作用。
这是抽象模板类:
这是模板默认实现类:
最后是规则接口,实现,和测试类:
其实写完了这个我自己也是迷迷糊糊的,理解的不是很彻底,反正写的时候就朝着那个思想走就行了。
最后问一句,我写这个算是 (模板+策略)吗? 求老师解答!
相关分类