策略模式初步探索

金三银四火热中,现在程序员门槛越来越高了。。。。
相信大家也在面试中不断被问设计模式这块。要是两年前还能忽悠过去说自己只会个单例、工厂、代理等,现如今还真忽悠不过去,下面说说策略模式

什么是策略模式?

概念:对象的某个行为,在不同场景中有不同的实现方式,这样就可以将这些实现方式定义成一组策略,每个实现类对应一个策略,在不同的场景就使用不同的实现类,并且可以自由切换策略。
白话:就是请求参数的不同去实现不同的逻辑,从而达到减少if/else的使用,说实话看多了这种满屏的if/else的话确实很难受。。。。

实战一波

以支付伪代码为例
1、先定义接口做约束

public interface InfPay {

    String Pay(OrderData orderData);
}

2、实体参数的定义

@Data
public class OrderData {
    private int orderId;
    private String orderType;
    private String orderContent;
}

3、对应的实现类

@Service(value = "wechatpay")
public class WeChatPay implements InfPay {
    @Override
    public String Pay(OrderData orderData) {
        return "微信"+"《"+orderData.getOrderContent()+"》"+"支付成功";
    }
}
@Service(value = "alipay")
public class AliPay implements InfPay {
    @Override
    public String Pay(OrderData orderData) {
        return "支付宝"+"《"+orderData.getOrderContent()+"》"+"支付成功";
    }
}

4、对外接口

@RestController
public class PayController {

    @Autowired
    private ApplicationContext applicationContext;

    @RequestMapping("/pay")
    public String pay(@RequestBody OrderData orderData){
    	//spring获取bean的方式有很多种,自由切换
        InfPay bean = applicationContext.getBean(orderData.getOrderType(), InfPay.class);
        String paymessage = bean.Pay(orderData);
        return paymessage;

    }
}

小结:1、几乎是白话文讲出了策略模式,小白可以拿去吹牛逼了。。。。
2、结尾我想问问大神:策略模式跟工厂模式区别在哪里?求知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值