写在前面
很多人可能在公司就是做普通的CRUD的业务,对于设计模式,即使学了好像也用处不大,顶多就在面试的时候能说上几种常见的单例模式,工厂模式。而在实际开发中,设计模式似乎很难用起来。
在现在的环境下,程序员的竞争已经非常激烈了,要体现出自身的价值,最直接的体现当然是差异化。这无需多说,我认为在实际开发中能运用设计模式,是很能体现差异化的。设计模式是一些前人总结的较好的方法,使程序能有更好的扩展性,可读性,维护性。
下面举个例子,使用策略模式解决多重if-else的代码结构。想学习更多的设计模式的实战经验,那就点个关注吧,谢谢大佬。
使用if-else
假设我们要开发一个支付接口,要对接多种支付方式,通过渠道码区分各种的支付方式。于是定义一个枚举PayEnum
,如下:
public enum PayEnum {
ALI_PAY("ali","支付宝支付"),
WECHAT_PAY("wechat","微信支付"),
UNION_PAY("union","银联支付"),
XIAO_MI_PAY("xiaomi","小米支付");
/**渠道*/
private String channel;
/**描述*/
private String description;
PayEnum(String channel, String description) {
this.channel = channel;
this.description = description;
}
/**以下省略字段的get、set方法*/
创建一个PayController
类,代码如下:
@RestController
@RequestMapping("/xiaoniu")
public class PayController {
@Resource(name = "payService")
private PayService payService;
/**
* 支付接口
* @param channel 渠道
* @param amount 消费金额
* @return String 返回消费结果
* @author Ye hongzhi
* @date 2020/4/5
*/
@RequestMapping("/pay")
public String pay(@RequestParam(name = "channel") String channel,
@RequestParam(name = "amount") String amount
)throws Exception{
return payService.pay(channel,amount);
}
}
再创建一个PayService
接口以及实现类PayServiceImpl
public interface PayService {
/**
* 支付接口
* @param channel 渠道
* @param amount 金额
* @return String
* @author Ye hongzhi
* @date 2020/4/5
*/
String pay(String channel,String amount)throws Exception;
}
@Service("payService")
public class PayServiceImpl