第一篇学习博客: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..判断,减少了开销

不过对于项目设计模式的选择首先也是根据业务来进行设计

产品代码的设计核心主要还是考虑可维护性、扩展性、代码性能来进行

加油 !我的第一篇学习博客!

相关