第一篇学习博客:Java开发工厂+策略模式
背景:
最近在做网上商城的项目,其中一个需求是要把我们商城中的地址转换成其他商城的地址编码。
需要调用到第三方的地址接口来转换
举例:
我的请求参数
请求完接口后返回结果:其实实现功能很简单。但是因为调用的是多方的地址接口,所以代码中写了很多“if...else..”
跟广大人民想法一样,我把if里面的方法封装起来,做为可单独调用的方法,这样改了之后还想再优化一下。
后续的优化引入了工厂+策略模式
下面是我改成策略模式后的代码:
引入了工厂+策略的模式,根据策略实例化对应的bean,再调用实现类中对应的方法
原来的逻辑
if (sourceMall == 'A' ) {
调用A商城的token
获取A商城的地址接口
转换为前端可用的数据
if (sourceMall == 'B' ) {
调用B商城的token
获取B商城的地址接口
转换为前端可用的数据
....重复判断
优化过程:
1. 建立策略工厂类 StrategyFactory, 作用是根据对应的策略id 实例化对应的bean
2. 建立地址转换策略工厂类,继承StrategyFactory,声明接口bean
3. 建各端的地址转换策略接口,例如 京东的 ParsingAddressStrategy,
4. 建对应的地址转换策略接口实现类,soureMall作为策略值,各实现类对应各自的策略值,
5. 业务实现类中通过策略值调用策略方法,实现业务逻辑
使用这种设计模式的好处
1.易于扩展,如果项目后期需要接入其他第三方的地址解析,只需要开对应的策略接口、实现类就可以
2.维护性也比较高,不至于在有业务逻辑修改的时候在一堆if...else..中进行修改,也减少了代码中的if..else..判断,减少了开销
不过对于项目设计模式的选择首先也是根据业务来进行设计
产品代码的设计核心主要还是考虑可维护性、扩展性、代码性能来进行
加油 !我的第一篇学习博客!