策略模式

使用策略模式来解决if-else的问题:

对于策略模式的使用场景:

在最近写代码的时候遇见了一个这样的业务问题,就是根据一卡通的状态去展示一卡通的一些个人卡片信息,有这么几种状态:申请状态、补办挂失、延期管理、清退申请这么几种状态,对于这么样的业务我们通常一个接口定义就可以解决这样的问题,只需要给每一种状态赋予特定的id表示即可通过一个接口做到,如下:

public List<cardInfo> getCardInfoList(String status)
    {    
        cardInfoService.getCardInfoList(status);
    }

怎样提高代码的高扩展可用性?

现在又来了一个这样的不是需求的需求就是:

1对于卡片状态是申请状态的给我按照卡片的新建时间排序

2对于清退申请的卡片给我按照性别分类

对于上面这样的不成文的的需求,我们在一个接口的service层就需要做这样的if-else判断处理来满足我们的业务需求

public List<cardInfo> getCardInfoList(String status) {
        if (status == 0) {
            //做对应状态是0的业务处理
        } else if (status == 1) {
            //做状态对应是1的业务处理
        } else if(){
        ....................
        }
    }

 对于这样的业务在一个方法里面处理,代码的耦合度很高,虽然也能够实现功能,单对于后期功能的扩展不符合程序设计的开闭原则,即对修改关闭,对扩展开放,所以上面这种程序的设计显然很low。

下面我来介绍下采用策略模式解决上面多个else-if的问题:

策略模式

1首先策略模式,我们需要建立一个接口或者抽象类

public interface CardInfoService {
    /**
     * 查询对应状态的卡片信息列表
     *
     * @param status
     * @return
     */
    List<CardInfo> getCardInfoList(String status);
}

2根据不同的策略去实现自己的具体业务

@Service
public class applyCardInfoSeviceImpl implements CardInfoService {
    @Override
    public List<CardInfo> getCardInfoList(String status) {
        return null;
    }
}

这样不同的业务放到自己各自的service中去处理,这样解决了程序设计上的开闭原则

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值