适配器模式

    适配器模式的主要目的就是为了兼容,即不改变原来的代码,也能兼容新的需求。

     老系统运行了很久比较稳定,为了保持其稳定性,不便再去修改原来的代码,但是又要为了兼容新的需求 或标准,我们不得不去系统再做些文章。(向下兼容)

使用场景:登录

     用户名、密码  验证用户名密码的有效性---》把登录结果保存到session中,--->写入到浏览器cookie
     随着互联网技术的发展,用户的需求多样化。我懒得注册,我只想用QQ登录,微信登录,微博登录、手机号+验证码。

     Spring中的适配器 类名都是以adapt 结尾的

demo

/**
 * @description:稳定的注册和登录方法
 **/
@Deprecated    
//会在原来的类上加上@Deprecated注解,表示该类是过时的,建议使用新类 SiginForThirdService
public class SignService {

    /**
     *注册方法
     * @param username
     * @param password
     * @return
     */
    public ResultMsg regist(String username, String password){
        return new ResultMsg(200,"注册成功", new Member());
    }

    /**
     * 登录方法
     * @param username
     * @param password
     * @return
     */
    public ResultMsg login(String username,String password){
        return null;
    }
}
/**
 * @description: 第三方的登录方法,稳定的方法不去动,直接继承下来
 **/
public class SiginForThirdService extends SignService {
    public ResultMsg loginForQQ(String openId){
        //1、openId是全局唯一们可以把他当做用户名
        //2、密码默认为QQ_EMPTY
        //3、注册(在原有系统里面创建一个用户)
        //4、登录(调用原来的登录方法)
        ResultMsg loginMsg = super.login(openId, null);
        return loginForRegist(openId,null);
    }

    public ResultMsg loginForWechat(String openId){
        return null;
    }

    public ResultMsg loginForToken(String token){
        //通过拿到token 信息再登录一次
        return null;
    }

    public ResultMsg loginForTelphone(String telphone,String code){
        return null;
    }

    public ResultMsg loginForRegist(String username,String password){

        ResultMsg registMsg = super.regist(username, null);
        return super.login(username, null);
        
    }

}
public class Member {
    private String username;
    private String password;
    private String mid;
    private String info;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getMid() {
        return mid;
    }

    public void setMid(String mid) {
        this.mid = mid;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }
}
public class ResultMsg {
    private int code;
    private String msg;
    private Object data;

    public ResultMsg(int code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }


    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}
public class SiginForThirdServiceTest {

    public static void main(String[] args) {
        SiginForThirdService service = new SiginForThirdService();
        //还可以再加一层策略模式
        //适配器的目的,就是不改变原来的代码,也能兼容新的需求
        service.loginForQQ("1234sssgfasfda");
    }

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值