策略模式配合java8的应用

策略模式配合java8的应用

在用java编写业务代码的过程中,经常会碰到一个业务有不同种的实现。典型的如用户登录,登录入口只有一个,但是要匹配微信、网易、QQ、支付宝、新浪微博等不同的登录渠道。各种业务场景的具体实现又各不相同,有的实现细节业务非常复杂。如果不合理的编码,会导致代码观感很差,影响阅读和维护。今天以这个场景来探讨下策略模式配合java8如何实现优雅编码,代码如下:

1、定义登录请求对象,具体参数不做过多探讨,这里只标识登录的渠道码
public class LogingRequest {
   

	private String loginTypeCode;

	/** 其他业务参数 **/

	public String getLoginTypeCode() {
   
		return loginTypeCode;
	}

	public void setLoginTypeCode(String loginTypeCode) {
   
		this.loginTypeCode = loginTypeCode;
	}

}
2、一般程序员可能不加思索,按业务逻辑就开始编码,代码应该是这样的
// 普通程序员的写法
	public void loginWithIfElse(LogingRequest logingRequest) {
   
		if ("wechat".equals(logingRequest.getLoginTypeCode())) {
   
			// 微信登录的逻辑,
			/**
			 * 一大堆逻辑 $$$$$&^&^&^&%&%&&^&^&^& erwerewrwrewr 2343243242
			 */
			System.out.println("从微信渠道登录");
		} else if ("qq".equals(logingRequest.getLoginTypeCode())) {
   
			// qq登录的逻辑
			/**
			 * 一大堆逻辑 $$$$$&^&^&^&%&%&&^&^&^& erwerewrwrewr 2343243242
			 */
			System.out.println("从QQ渠道登录");
		} else if ("netease".equals(logingRequest.getLoginTypeCode())) {
   
			// 网易登录的逻辑
			/**
			 * 一大堆逻辑 $$$$$&^&^&^&%&%&&^&^&^& erwerewrwrewr 2343243242
			 */
			System.out.println("从网易渠道登录");
		} else if ("sina".equals(logingRequest.getLoginTypeCode())) {
   
			// 新浪微博登录的逻辑
			/**
			 * 一大堆逻辑 $$$$$&^&^&^&%&%&&^&^&^& erwerewrwrewr 2343243242
			 */
			System.out.println("从新浪微博渠道登录");
		} else if ("alipay".equals(logingRequest.getLoginTypeCode())) {
   
			// 支付宝登录的逻辑
			/**
			 * 一大堆逻辑 $$$$$&^&^&^&%&%&&^&^&^& erwerewrwrewr 2343243242
			 */
			System.out.println("从支付宝渠道登录");
		}
	}

这样写出来的代码很长,很难看理解,考虑到各登录渠道里还有很复杂的逻辑,也会有很多if+esle,眼睛都会看花,到时候估计不光别人维护你代码会骂娘,你自己看的都一头大。

3、有经验的程序员会抽取一个公共的接口,不同的登录渠道在实现接口后,在自己类中维护和登录逻辑,代码如下
public interface LoginService {
   
	
	void login(LogingRequest logingRequest);

}

public class WeChatLoginService implements LoginService {
   

	public void login(LogingRequest logingRequest) {
   
		/**一大堆逻辑
		 * $$$$$&^&^&^&%&%&&^&^&^&
		 * erwerewrwrewr
		 * 2343243242
		 */
		System.out.println("从微信渠道登录"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值