【设计模式】一个代码抽离功能居然用上3种设计模式,飞机太大拉不动

【设计模式】一个代码抽离功能居然用上3种设计模式,飞机太大拉不动

逗比经理又来找Egan帮忙了

1.png


2.png

3.png


4.png

Egan接下这个活后看着自己日渐稀少的头发

70d688367a131d0008b3a3292dd92cb2.png5.png

接近一百个Dao接口类,这活是人干的么,这是熬夜搬砖也搬不完。

 6.png

bef4400cbc05de35bf684369d9db10ed.gif

这怎么搬,得有起重机啊,难道要我自己造?

7.pngbef4400cbc05de35bf684369d9db10ed.gif

Egan突然灵光一闪:那我就自己造一个起重机8.png

7271c5355849581ab0cc4a422170bbb4.png

先写一个脚本把Dao接口拷贝至基础服务模块里面,机智的Egan想到直接用DOS命令去迁移。

首先需要创建目标目录(mkdir命令),然后在执行copy命令,大概就是这样的

9.png

da0ee77761bb7faddda2580e5b9834c3.png

想了想这样一个一个执行过去也慢,写程序吧。

Egan构思了一下主要几个部分组成:

  1. 拷贝Dao接口、Dao.xml 至对应的基础服务模块

  2. 拷贝实体类(dto,entyty等等)至对应的数据接口服务模块

  3. 解析Dao接口去除内部杂质得到DataServiceIntf接口并保存至数据接口服务模块

  4. 解析Dao接口去除内部杂质解;解析方法得到参数并将抽象方法变成具体的方法,内部调用Dao对应的方法。保存至基础服务模块类名XXXDataService

差不多就这样了,归类之后变成三类:

  1. 不需要解析直接拷贝文件

  2. 需要解析并处理

  3. 不需要处理的文件(用于匹配以上4个组成部分)

就这样抽象出一个接口类,三个抽象方法

f3ad9200a444b787a52825d7289193a9.png10.png

接着Dao接口类、Dao.xml、实体为直接拷贝的方式,那么这里他们的区别就是目标文件的路径不一样,那么可以编写一个中庸的抽象类把目标文件路径抽象出来。

11.pngbef4400cbc05de35bf684369d9db10ed.gif

接口与抽象类编写完差不多然后把所有的类先创建号,类图差不多就是这样子的

12.pngbef4400cbc05de35bf684369d9db10ed.gif

编写Dao文件处理器实现类

13.pngb214fd19867ad4e94d5db9e281c8b5c5.png

编写实体文件处理器实现类

14.pngbef4400cbc05de35bf684369d9db10ed.gif

完美,拷贝方式就这样写完了。

8f3bee0dca960401693944813c5f5110.png

bef4400cbc05de35bf684369d9db10ed.gif15.png

3e05762d1d9d2602b922c71f299d86d6.png

15.5.png

16.png

赞,Dao转DataServiceIntf也编写完成

Egan继续编写剩余的类

640.gif8e6d1cc6e43e3b27f84b8e037e863cb0.png

编写完成。

最后只剩启动类,需要对文件遍历处理

滴答滴答

640.gif

bef4400cbc05de35bf684369d9db10ed.gif

编写终于编写完成啦

17.pngbef4400cbc05de35bf684369d9db10ed.gif

09e177d93182ef6d9363616cd159070b.png

18.png

启动试试。全部成功处理完成。 

不到一天就完成任务了,哈哈哈,自夸一下,庆祝下,今晚加餐

19.pnga39728de7edab09a6154ef999d5c17b9.png

嘻嘻,今天就不跟逗比经理说完成了,划水一下,明天再跟他说完成了,让他奖励一波。20.png

182b412ad3db5fb4fdd0f7c9c4369f7d.png

滴答滴答

640.gif

第二天


21.png

22.png

Egan超开心开心,暗喜道:有加餐的活就应该多来一些

你们觉得Egan编写这套组件运用了哪几种设计模式?可在下方留言哦。

往期热门文章:

☞【设计模式】飞机太大Egan拉不动

☞【设计模式-原型】Egan好不容易来的加薪机会

☞【设计模式】逗比经理居然找Egan闲聊

☞【设计模式】发誓不再熬夜

☞  服务器突然宕机重启导致docker中redis无法启动

☞  jdbc sql如何高效优雅的解决字典表数据转化

☞  NIO入门介绍--Buffer缓冲区

☞  NIO入门介绍--Channel通道>直接缓冲区

猜你喜欢

转载自blog.51cto.com/7041393/2554331