需求场景:
给定多种路径的http链接,解析不同url的参数,根据参数获取数据,组织数据发送到特定接口。
实现思路:
处理不同url的过程有共同点,如发送数据的格式、接收接口的接口相同,都需要从url解析参数,获取、组织数据都需要使用数据库连接资源,
不同点是获取、组织数据的逻辑不同。
因此设计一个父类,不同的url设计一个对应的子类。
父类:
1.持有数据库连接,同时实现数据库连接释放方法(若子类较多,该部分可以单独拆分,避免浪费资源)
2.抽象一个匹配接口,传入url,返回是否由当前策略处理,具体由子类实现
2.抽象一个组织数据接口,具体由子类实现
3.发送数据接口,调用组织数据接口,完成数据发送
子类
1.实现匹配接口,正则表达式匹配url
2.实现组织数据接口,实现获取和组织数据的逻辑
为了方便使用这些不同的策略,设计一个上下文类持有这些不同的子类
上下文类:
1.持有父类引用指向不同子类实例的列表
2.实现选择策略接口,传入一个url, 遍历子类实例列表,调用其匹配接口,若匹配则返回该子类实例
3.实现资源释放接口,遍历子类实例列表,分别调用其释放数据库连接方法
处理的时候构造一个上下文对象,处理结束后调用资源释放接口即可。
若按过程方法去实现这个需求,肯定会有多个if-else逻辑,对后来人维护不友好。
简单抽象一下,不用手写多个if-else的判断逻辑,增加删除一个策略也比较简单,代码维护相对容易。