策略模式 + 反射工厂 很好的实现了开闭原则

本文介绍了一种解决复杂判断逻辑的需求场景,通过策略模式结合反射工厂,避免了if-else的滥用,实现了代码的开闭原则。文章详细展示了不同解决方案的演变,包括公共接口、具体策略实现、工厂类以及配置文件的使用,强调了当需求扩展时,反射工厂的优势。
摘要由CSDN通过智能技术生成

应用场景:某天接到了一个需求,品牌给了一个第三方接口,例如:www.baidu.com,我们通过调用这个第三接口,会返回4种状态,ex:

String pageStatus = "pdpAdvertisePage";  代表我们经过一堆处理后要返回的是pdp广告页面

String pageStatus = "plpAdvertisePage";   代表我们经过一堆业务处理后要返回的是plp广告页面

String pageStatus = "shoppingCartAdvertisePage"; 代表我们经过一堆业务处理后要返回的是购物车广告页面

String pageStatus = "checkoutAdvertisePage"; 代表我们经过一堆业务处理后要返回的是购物车广告页面

期间的解决方案一:做了好多的判断 if elseif  elseif 写到后面我都不知道里面的判断逻辑是啥,太复杂了,果断放弃了

期间的解决方案二:利用了策略模式+简单工厂模式,总算把那些个if else给去掉了,逻辑算是比较清晰了

期间的解决方案三:利用策略模式+反射工厂,很完美的解决了简单工厂模式所带来的弊端 -- 实现了所谓的开闭原则

代码目录结构:

公共的接口: GetPointAdvertisePageStrategey.java

import org.springframework.ui.Model;

/**
 * @author : David.liu
 * @description : 得到指定广告页面
 * @creat :2019-05-26-22:02
 */
public interface GetPointAdvertisePageStrategey {

    /**
     * 得到指定的页面
     * @param itemRecommendParam
     * @param model
     * @return
     */
    String getAdvertisePage(Model model);
}

Ppd实现接口代码:PdpAdvertisePageStrategey.java

import org.springframework.stereotype.Component;
import org.springframework.ui.Model;

/**
 * @author : David.liu
 * @description : 得到pdp广告页面
 * @creat :2019-05-26-22:05
 */
@Component
public class PdpAdvertisePageStrategey implements  GetPointAdvertisePageStrategey{

    /**
     * 得到指定的页面
     *
     * @param itemRecommendParam
     * @param model
     * @return
     */
    @Override
    public String getAdvertisePage() {
        return "pdp-advertise.jsp";
    }
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值